246D. Colorful Graph - Codeforces Solution C++

  Problem Link : 246D. Colorful Graph 


✅ C++ Solution :

 
#include<bits/stdc++.h>
using namespace std;
 
int dfs(int v,vector<int> adj[],bool visited[],set<int> arr[],int color[])
{
	int clr;
	for(int i=0;i<adj[v].size();i++)
	{
		if(!visited[adj[v][i]])
		{
			visited[adj[v][i]]=1;
            clr=dfs(adj[v][i],adj,visited,arr,color);
		}
		else
			clr=color[adj[v][i]];		    
 
        if(clr!=color[v])
		    arr[color[v]].insert(clr);
	}
 
	return color[v];
 
}
 
int main()
{
	int n,m,a,b;
	cin>>n>>m;
	int color[n+1];
	unordered_set<int> ps;
	for(int i=1;i<=n;i++)
	{
		cin>>color[i];
		ps.insert(color[i]);
	}
	vector<int> adj[n+1];
	for(int i=1;i<=m;i++)
	{
		cin>>a>>b;
		adj[a].push_back(b);
		adj[b].push_back(a);
	}
 
	set<int> arr[100001];
 
	bool visited[n+1];
 
	memset(visited,0,sizeof(visited));
 
	for(int i=1;i<=n;i++)
	{
		if(!visited[i])
		{
			visited[i]=1;
			dfs(i,adj,visited,arr,color);
		}
	}
	int col=-1;
	int st=-1;
	for(int i=1;i<=100000;i++)
	{
	    int t=arr[i].size();
		if(ps.find(i)!=ps.end() && t > st)
		{
		    st=t;
			col=i;
		}
			
	}
 
	cout<<col;
 
}

 

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