题目意思就是说要求判断给的图里每个相邻点的颜色是不是有相同的,没有的话输出颜色的数目,否则输出NO,读懂了题意就不难。
#include<iostream>
#include<vector>
#include<set>
using namespace std;
int n, m,v1,v2,k,color[10005];
vector<pair<int,int>> edge;
int main() {
cin >> n >> m;
for (int i = 0; i < m; i++) {
scanf("%d %d",&v1,&v2);
edge.push_back(make_pair(v1,v2));
}
cin >> k;
for (int i = 0; i < k; i++) {
set<int> s;
int flag = true;
for (int j = 0; j < n; j++) {
scanf("%d",&color[j]);
s.insert(color[j]);
}
for (auto it : edge) {
if (color[it.first] == color[it.second]) {
printf("No\n");
flag = false;
break;
}
}
if (flag) printf("%d-coloring\n",s.size());
}
return 0;
}