题意:给出一张图,每个点有一个颜色,一条边上的两个点要求不同色,同色输出No,满足条件输出一共使用了多少颜色。
题解:暴力搜索每一条边判断。
注意点:一道简单的图的遍历题目,没有大的坑点。
code in view
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e4+10;
int n,m,k;
vector<int> g[maxn];
int col[maxn];
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int u,v;
cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
cin>>k;
while(k--){
bool flag=false;
int cnt=0;
set<int> s;
for(int i=0;i<n;i++) cin>>col[i],s.insert(col[i]);
cnt=s.size();
// cout<<cnt<<endl;
for(int i=0;i<n;i++){
for(int j=0;j<g[i].size();j++){
if(col[i]==col[g[i][j]]){
flag=true;
break;
}
}
if(flag) break;
}
if(flag) cout<<"No\n";
else printf("%d-coloring\n",cnt);
}
system("pause");
return 0;
}