MCPcopy Create free account
hub / github.com/SuprDewd/CompetitiveProgramming / dfs

Function dfs

code/graph/cut_points_and_bridges.cpp:3–15  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1#define MAXN 5000
2int low[MAXN], num[MAXN], curnum;
3void dfs(const vvi &adj, vi &cp, vii &bri, int u, int p) {
4 low[u] = num[u] = curnum++;
5 int cnt = 0; bool found = false;
6 rep(i,0,size(adj[u])) {
7 int v = adj[u][i];
8 if (num[v] == -1) {
9 dfs(adj, cp, bri, v, u);
10 low[u] = min(low[u], low[v]);
11 cnt++;
12 found = found || low[v] >= num[u];
13 if (low[v] > num[u]) bri.push_back(ii(u, v));
14 } else if (p != v) low[u] = min(low[u], num[v]); }
15 if (found && (p != -1 || cnt > 1)) cp.push_back(u); }
16pair<vi,vii> cut_points_and_bridges(const vvi &adj) {
17 int n = size(adj);
18 vi cp; vii bri;

Callers 1

cut_points_and_bridgesFunction · 0.70

Calls 1

push_backMethod · 0.80

Tested by

no test coverage detected