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