Critical Connections in a Network LeetCode solution in C++

1
class Solution {
2
int timer = 1;
3

4
public:
5
void dfs(vector<int> adj[], int node, int parent, vector<int> &tin, vector<int> &low,
6
vector<int> &vis, vector<vector<int>> &ans) {
7
vis[node] = 1;
8
tin[node] = low[node] = timer;
9
timer++;
10
for (auto it : adj[node]) {
11
if (it == parent) continue;
12
if (vis[it] == 0) {
13
dfs(adj, it, node, tin, low, vis, ans);
14
low[node] = min(low[node], low[it]);
15
if (tin[node] < low[it]) ans.push_back({node, it});
16
} else {
17
low[node] = min(low[node], low[it]);
18
}
19
}
20
}
21
vector<vector<int>> criticalConnections(int n, vector<vector<int>> &con) {
22
vector<int> adj[n];
23
for (int i = 0; i < con.size(); i++) {
24
adj[con[i][0]].push_back(con[i][1]);
25
adj[con[i][1]].push_back(con[i][0]);
26
}
27
vector<vector<int>> ans;
28
vector<int> vis(n, 0), tin(n, 0), low(n, 0);
29
dfs(adj, 0, -1, tin, low, vis, ans);
30
return ans;
31
}
32
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0