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]])
)