1154 Vertex Coloring vector pair int int v unordered_set int colors

//1154 Vertex Coloring (25 分)
//#include 
//#include 
//using namespace std;
//const int MAXV = 10010;
//const int INF = 1000000000;
//int n, m, a, b, k;
//vectorvt;
//bool vis[MAXV] = { false };
//int edge[MAXV][MAXV];
//int c[MAXV];
//bool flag = false;
//
//bool isin(vector v, int a) {
//	vector::iterator it;
//	it = find(v.begin(), v.end(), a);
//	if (it != v.end()) return true;
//	else return false;
//}
//void DFS(int i) {
//	vis[i] = true;
//	for (int j = 0; j < n; j++) {
//		if (vis[j] == false && edge[i][j] != INF && c[i] != c[j]) {
//			if(!isin(vt, c[j]))
//				vt.push_back(c[j]);
//			
//			DFS(j);
//		}
//		else if (c[i] == c[j])
//			flag = true;
//			
//	}
//}
//void DFSTrave() {
//	for (int i = 0; i < n; i++) {
//		if (vis[i] == false) {
//			if (!isin(vt, c[i]))
//				vt.push_back(c[i]);
//			DFS(i);
//		}
//			
//	}
//}
//int main() {
//	
//	cin >> n >> m ;
//	
//	for (int i = 0; i < m; i++) {
//		cin >> a >> b;
//		edge[a][b] = edge[b][a] = 1;
//	}
//	cin >> k;
//	while (k--) {
//		for (int i = 0; i < n; i++) 
//			cin >> c[i];
//		DFSTrave;
//		if (flag == false)
//			cout << vt.size() << " - coloring" << endl;
//		else cout << "No" << endl;
//		flag = false;
//		vt.clear();
//		vis[MAXV] = { false };
//	}
//	return 0;
//}

#include 
#include 
#include 
using namespace std;

int main() {
	int n, m, k;
	int c[10010];
	cin >> n >> m;
	vector>v;
	for (int i = 0; i < m; i++) {
		int a, b;
		cin >> a >> b;
		v.push_back({ a,b });
	}
		cin >> k;
		while (k--) {
			unordered_setcolors;
			for (int i = 0; i < n; i++) {
				cin >> c[i];
				colors.insert(c[i]);
			}
			bool flag = true;
			for (int i = 0; i < v.size()&&flag; i++)
				if (c[v[i].first] == c[v[i].second])
					flag = false;
			if (!flag) cout << "No" << endl;
			else cout << colors.size() << "-coloring" << endl;
	}
	return 0;
}

 

你可能感兴趣的:(PAT-AL)