JSFiddle - React, Tailwind, and code Playground
by jayakrishnancn
TypeScript
function countPairs(n, edges){
const orgVisited = [];
const adj = [];
if(n <= 1) return 0;
for(let i=0;i<n;i++){
orgVisited[i] = false;
if(!edges[i]) continue;
let a = edges[i][0], b = edges[i][1];
if(!adj[a]){
adj[a] = [];
}
adj[a].push(b);
if(!adj[b]){
adj[b] = [];
}
adj[b].push(a);
}
function dfs(v, visited){
visited[v] = true;
if(!adj[v]) return;
for(let i of adj[v]){
if(!visited[i]){
dfs(i, visited)
}
}
}
function countVisited(visited){
return visited.length > 0 ? visited.filter(i => i == true).length: 0
}
let count = [];
let visited = [...orgVisited];
let prev = 0
for(let i=0;i<n;i++){
if(visited[i] === false){
dfs(i, visited);
let curr = countVisited(visited) ;
count.push(curr- prev);
prev = curr;
}
}
if(count.length === 1) return count[0];
let sum = 0;
for(let i=0;i<n-1;i++){
for(let j=i+1;j<n;j++){
sum += count[i] * count[j];
}
}
return sum;
};
console.log(
countPairs(7, [[0,2],[0,5],[2,4],[1,6],[5,4]])
)