➤ Problem Link : 489D. Unbearable Controversy of Being
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; #define ll long long int ll n,m,ans; vector<int> adj[3002]; ll paths[3002][3002]; bool visited[3002]; ll combs[3002]; ll fact(ll n) { if(n==0 || n==1) return 1; return n*fact(n-1); } void func(int v) { int s; for(int i=0;i<adj[v].size();i++) { s=adj[v][i]; if(!visited[s]) { visited[s]=1; func(s); } for(int j=0;j<adj[s].size();j++) { if(adj[s][j]!=v) paths[v][adj[s][j]]++; } /* for(int j=0;j<adj[v].size();j++) { if(adj[v][j]!=s) paths[s][adj[v][j]]++; }*/ } } int main() { int u,v; ans=0; memset(paths,0,sizeof(paths)); memset(visited,0,sizeof(visited)); cin>>n>>m; combs[0]=0; combs[1]=0; for(int i=2;i<=n;i++) combs[i]=i-1+combs[i-1]; for(int i=1;i<=m;i++) { cin>>u>>v; adj[u].push_back(v); } for(int i=1;i<=n;i++) { if(!visited[i]) { visited[i]=1; func(i); } } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(i==j) continue; // cout<<paths[i][j]<<" "; ans+=combs[paths[i][j]]; } } cout<<ans; }
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!