Skip to content

Commit d754795

Browse files
committed
Time: 8 ms (98.08%), Space: 204.6 MB (92.21%) - LeetHub
1 parent d4c6110 commit d754795

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
class Solution {
2+
public:
3+
vector<int> par, dep;
4+
5+
vector<int> minimumCost(int n, vector<vector<int>>& edg, vector<vector<int>>& qry) {
6+
par.resize(n, -1);
7+
dep.resize(n, 0);
8+
vector<int> cmpCost(n, -1);
9+
10+
for (auto& e : edg) {
11+
Union(e[0], e[1]);
12+
}
13+
14+
for (auto& e : edg) {
15+
int r = find(e[0]);
16+
cmpCost[r] &= e[2];
17+
}
18+
19+
vector<int> ans;
20+
for (auto& q : qry) {
21+
int u = q[0], v = q[1];
22+
if (find(u) != find(v)) ans.push_back(-1);
23+
else ans.push_back(cmpCost[find(u)]);
24+
}
25+
26+
return ans;
27+
}
28+
29+
private:
30+
int find(int x) {
31+
if (par[x] == -1) return x;
32+
return par[x] = find(par[x]);
33+
}
34+
35+
void Union(int x, int y) {
36+
int r1 = find(x), r2 = find(y);
37+
if (r1 == r2) return;
38+
39+
if (dep[r1] < dep[r2]) swap(r1, r2);
40+
par[r2] = r1;
41+
42+
if (dep[r1] == dep[r2]) dep[r1]++;
43+
}
44+
};

0 commit comments

Comments
 (0)