L2-023 图着色问题(团体程序设计天梯赛-练习集)

link

#include <bits/stdc++.h>

using namespace std;

const int MAXN = 510;

int g[MAXN][MAXN];
int color[MAXN];
int n, m, k;
int num;

bool check(int i){
    for(int j = 1; j <= n; j++){
        if(g[i][j]){
            if(color[i] == color[j])
                return false;
        }
    }
    return true;
}

int main(){
    cin >> n >> m >> k;
    for(int i = 0; i < m; i++){
    	int a, b;
    	cin >> a >> b;
    	g[a][b] = 1, g[b][a] = 1;
	}
	
cin >> num;
while(num--){
	int flag = 0;
	set<int> s;
	for(int i = 1; i <= n; i++){
		cin >> color[i];
		s.insert(color[i]);
	}
	
	if(s.size() != k){
		flag = 1;
		puts("No");
	}else{
		for(int i = 1; i <= n; i++){
			if(check(i) == false){
				flag = 1;
				puts("No");
				break;
			}
		}
	}
	if(flag == 0) puts("Yes");
}

return 0;
}
posted @ 2025-03-06 19:35  awei040519  阅读(10)  评论(0)    收藏  举报