zoukankan      html  css  js  c++  java
  • A1154 Vertex Coloring (25分)

    一、技术总结

    1. 这一题看起来好像要使用图的知识,其实不必,只需要将图存储下来即可,然后遍历每条边所对应的两个点看颜色是否相同,如果相同则不符合题目要求输出No,如果符合要求那么输出颜色的数量即可。
    2. 涉及到vector存储图的信息,以及set存储颜色的数量;

    二、参考代码

    #include<iostream>
    #include<vector>
    #include<set>
    using namespace std;
    int main(){
    	int n, m, a, b;
    	cin >> n >> m;
    	vector<int> v[n];
    	for(int i = 0; i < m; i++){
    		scanf("%d%d", &a, &b);
    		v[a].push_back(b);
    		v[b].push_back(a);
    	}
    	int k;
    	cin >> k;
    	for(int i = 0; i < k; i++){
    		vector<int> ans(n);
    		set<int> sq;
    		for(int j = 0; j < n; j++){
    			cin >> ans[j];
    			sq.insert(ans[j]);
    		}
    		int flag = 1;
    		for(int j = 0; j < n; j++){
    			for(int l = 0; l < v[j].size(); l++){
    				if(ans[j] == ans[v[j][l]]){
    					flag = 0;
    					break;
    				}
    			}
    		}
    		if(flag == 1){
    			printf("%d-coloring
    ", sq.size());
    		}else{
    			printf("No
    ");
    		}
    	}
    	return 0;
    } 
    
  • 相关阅读:
    几种常用类的学习
    类,接口
    方法
    数组使用
    条件控制与循环
    类型转换,运算符
    Java基本类型
    SVN基本使用
    【转】MySQL的btree索引和hash索引的区别
    常用命令(java、linux)
  • 原文地址:https://www.cnblogs.com/tsruixi/p/13193312.html
Copyright © 2011-2022 走看看