class Solution {
public:
long long countPairs(int n, vector<vector<int>>& edges) {
vector<vector<int>> g(n);
for (const auto& e : edges) {
g[e[0]].push_back(e[1]);
g[e[1]].push_back(e[0]);
}
vector<int> seen(n);
long long cur = 0;
function<void(int)> dfs = [&](int u) {
++cur;
for (int v : g[u])
if (seen[v]++ == 0) dfs(v);
};
long long ans = 0;
for (int i = 0; i < n; ++i) {
if (seen[i]++) continue;
cur = 0;
dfs(i);
ans += (n - cur) * cur;
}
return ans / 2;
}
};
leetcode
challenge
Here is the link for the problem:
https://leetcode.com/problems/count-unreachable-pairs-of-nodes-in-an-undirected-graph/
Top comments (0)