【Set+Hash】1154 Vertex Coloring (25分)
// set+hash
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <set>
using namespace std;
const int maxn = 10000 + 10;
struct node
{
int t1, t2;
};
int main(int argc, char const *argv[])
{
int n, m, k;
cin >> n >> m; // n顶点数,m边数
vector<node> v(m);
for (int i = 0; i < m; i++)
{
cin >> v[i].t1 >> v[i].t2;
}
cin >> k;
while (k--)
{
int a[maxn] = {0};
bool flag = true;
set<int> se;
for (int i = 0; i < n; i++)
{
cin >> a[i];
se.insert(a[i]);
}
for (int i = 0; i < m; i++)
{
if (a[v[i].t1] == a[v[i].t2])
{
flag = false;
break;
}
}
if (flag)
cout << se.size() << "-coloring" << endl;
else
cout << "No" << endl;
}
return 0;
}