1276B. Two Fairs - Codeforces Solution C++

  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!!