L2-023 图着色问题 (25 分)
[L2-023 图着色问题 (25 分)]
#include <iostream>
#include <vector>
#include <cstdio>
#include <cstring>
#include <string>
#include <set>
#include <algorithm>
using namespace std;
int v, e, k;
vector<int> vec[505];
int book[505];
set<int> s;
bool Judge()
{
if (s.size() != k)
return false;
for (int i = 1; i <= v; i++)
{
for (int j = 0; j < vec[i].size(); j++)
{
if (book[i] == book[vec[i][j]])
{
return false;
}
}
}
return true;
}
int main()
{
cin >> v >> e >> k;
for (int i = 0; i < e; i++)
{
int u, v;
cin >> u >> v;
vec[u].push_back(v);
vec[v].push_back(u);
}
int t;
cin >> t;
while (t--)
{
s.clear();
memset(book, 0, sizeof(book));
for (int i = 1; i <= v; i++)
{
int a;
cin >> a;
book[i] = a;
s.insert(a);
}
bool flag = Judge();
if (flag)
cout << "Yes" << endl;
else
cout << "No" << endl;
}
return 0;
}