Evaluate Division LeetCode solution in C++

1
class Solution {
2
public:
3
vector<double> calcEquation(vector<vector<string>> &equations, vector<double> &values,
4
vector<vector<string>> &queries) {
5
map<string, vector<pair<string, double>>> graph;
6
map<string, double> dist;
7
map<string, bool> visited;
8
for (int i = 0; i < equations.size(); i++) {
9
if (graph.count(equations[i][0]) == 0) {
10
graph[equations[i][0]] = {};
11
visited[equations[i][0]] = false;
12
dist[equations[i][0]] = DBL_MAX;
13
}
14
if (graph.count(equations[i][1]) == 0) {
15
graph[equations[i][1]] = {};
16
dist[equations[i][0]] = DBL_MAX;
17
}
18
graph[equations[i][0]].push_back({equations[i][1], values[i]});
19
if (values[i] != 0)
20
graph[equations[i][1]].push_back({equations[i][0], 1 / values[i]});
21
else
22
graph[equations[i][1]].push_back({equations[i][0], -1});
23
}
24
vector<double> result;
25
for (int i = 0; i < queries.size(); i++) {
26
if (graph.count(queries[i][0]) == 0 || graph.count(queries[i][1]) == 0) {
27
result.push_back(-1);
28
continue;
29
}
30
if (queries[i][0] == queries[i][1]) {
31
result.push_back(1);
32
continue;
33
}
34
for (auto j : visited) visited[j.first] = false;
35
priority_queue<pair<double, string>, vector<pair<double, string>>,
36
greater<pair<double, string>>>
37
pq;
38
dist[queries[i][0]] = 1;
39
;
40
pq.push({1, queries[i][0]});
41
bool flag = false;
42
while (!pq.empty()) {
43
auto k = pq.top();
44
pq.pop();
45
visited[k.second] = true;
46
if (k.second == queries[i][1]) {
47
flag = true;
48
result.push_back(dist[k.second]);
49
break;
50
}
51
for (int j = 0; j < graph[k.second].size(); j++) {
52
if (!visited[graph[k.second][j].first]) {
53
dist[graph[k.second][j].first] = dist[k.second] * graph[k.second][j].second;
54
pq.push({dist[graph[k.second][j].first], graph[k.second][j].first});
55
}
56
}
57
}
58
if (!flag) result.push_back(-1);
59
}
60
return result;
61
}
62
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0