#include<iostream>
#include<map>
#include<cstring>
#include<queue>
#include<vector>
using namespace std;
#define N 10010
int Ver[N];
int n, m;
vector<int> Map[N];
int IsColoring();
bool BFS(int v);
int main()
{
cin >> n >> m;
for (int i = 0; i < m; i++)
{
int a, b;
cin >> a >> b;
Map[a].push_back(b);
Map[b].push_back(a);
}
int k,t;
cin >> k;
t = 1;
while (t <= k)
{
for (int i = 0; i < n; i++)
cin >> Ver[i];
int ans = IsColoring();
if (ans == -1)
cout << "No" << endl;
else
cout << ans << "-coloring" << endl;
t++;
}
system("pause");
return 0;
}
int IsColoring()
{
map<int, int> C;
int sum = 0;
for (int i = 0; i < n; i++)
{
if (C.count(Ver[i]) == 0)
{
C[Ver[i]] = 1;
sum++;
}
}
for (int i = 0; i < n; i++)
{
if (!BFS(i))
return -1;
}
return sum;
}
bool BFS(int v)
{
for (auto iter = Map[v].begin(); iter != Map[v].end(); iter++)
{
if (Ver[v] == Ver[*iter])
return false;
}
return true;
}
1154
猜你喜欢
转载自blog.csdn.net/zero_1778393206/article/details/88050690
今日推荐
周排行