➤ Problem Link : 1276B. Two Fairs
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; #define ll long long int int n,m,a,b; vector<int> adj[400001]; bool visited[400001]; ll cnt; void dfs(int v, int x) { cnt++; visited[v]=1; for(int i=0;i<adj[v].size();i++) { if(adj[v][i]==x) continue; if(!visited[adj[v][i]]) dfs(adj[v][i],x); } } int main() { int t,x,y; cin>>t; while(t--) { cin>>n>>m>>a>>b; for(int i=1;i<=n;i++) { visited[i]=0; adj[i].clear(); } for(int i=1;i<=m;i++) { cin>>x>>y; adj[x].push_back(y); adj[y].push_back(x); } ll cnt1=0,cnt2=0; cnt=0; dfs(a,b); cnt1=n-1-cnt; for(int i=1;i<=n;i++) visited[i]=0; cnt=0; dfs(b,a); cnt2=n-1-cnt; cout<<cnt1*cnt2<<"\n"; } }
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!!