Component Coloring
Implementation
DFS
void dfs(vector<vector<int>> &G, int u, vector<int> &color, int k) {
color[u] = k;
for (int v : G[u]) {
if (color[v] > -1) continue;
dfs(G, v, color, k);
}
}
int componentColoring(vector<vector<int>> &G, vector<int> &color) {
int N = G.size(), k = 0;
color.resize(N);
fill(color.begin(), color.end(), -1);
for (int i = 0; i < N; ++i) {
if (color[i] > -1) continue;
dfs(G, i, color, k++);
}
return k;
}BFS
Union Find
Last updated