• CCCC L2-023. 图着色问题【set去重判不同种类个数/简单图论/判断两相邻点是否存在同色以及颜色个数】


    L2-023. 图着色问题

    时间限制
    300 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    陈越

    图着色问题是一个著名的NP完全问题。给定无向图 G = (V, E),问可否用K种颜色为V中的每一个顶点分配一种颜色,使得不会有两个相邻顶点具有同一种颜色?

    但本题并不是要你解决这个着色问题,而是对给定的一种颜色分配,请你判断这是否是图着色问题的一个解。

    输入格式:

    输入在第一行给出3个整数V(0 < V <= 500)、E(>= 0)和K(0 < K <= V),分别是无向图的顶点数、边数、以及颜色数。顶点和颜色都从1到V编号。随后E行,每行给出一条边的两个端点的编号。在图的信息给出之后,给出了一个正整数N(<= 20),是待检查的颜色分配方案的个数。随后N行,每行顺次给出V个顶点的颜色(第i个数字表示第i个顶点的颜色),数字间以空格分隔。题目保证给定的无向图是合法的(即不存在自回路和重边)。

    输出格式:

    对每种颜色分配方案,如果是图着色问题的一个解则输出“Yes”,否则输出“No”,每句占一行。

    输入样例:
    6 8 3
    2 1
    1 3
    4 6
    2 5
    2 4
    5 4
    5 6
    3 6
    4
    1 2 3 3 1 2
    4 5 6 6 4 5
    1 2 3 4 5 6
    2 3 4 2 3 4
    
    输出样例:
    Yes
    Yes
    No
    No
    

    #include<bits/stdc++.h>
    
    using namespace std;
    #define N 550
    int mp[N][N];
    int main()
    {
        int flag;
        int v,e,k;
        int q;
        int a,b;
        memset(mp,0,sizeof(mp));
    
        scanf("%d%d%d",&v,&e,&k);//点 边
    
        for(int i=0;i<e;i++)//设为数组就不同 可以直接color[u[i]] == color[v[i]]?来判断
        {
            scanf("%d%d",&a,&b);
            mp[a][b]=mp[b][a]=1;
        }
    
        scanf("%d",&q);
        int color[N];
        
        while(q--){
            flag=1;
            set<int> s;//set要写到里面 哪里用哪里设置
            for(int i=1;i<=v;i++){
                scanf("%d",&color[i]);
                s.insert(color[i]);
            }
    
            if(s.size()!=k)
                flag=0;
    
            if(flag)
            for(int i=1;i<=v;i++){//是逻辑上相邻mp[i][j]==1
                for(int j=1;j<=v;j++){
                    if( mp[i][j] && color[i]==color[j] ){ //相接边设为数组的话就节省一层循环,遍历e
                        flag=0; 
                        break;
                    }
                 }
               }
    
            if(flag) printf("Yes
    ");
            else     printf("No
    ");
        }
    }
    模拟/建图
  • 相关阅读:
    软考信息安全云计算安全需求分析与安全保护工程
    PMP12.项目采购管理12.2实施采购
    PMP11.项目风险管理11.1规划风险管理
    PMP13.项目相关方管理13.2规划相关方参与
    PMP12.项目采购管理12.1规划采购管理
    PMP13.项目相关方管理13.4监督相关方参与
    【Locust locustfile脚本实战】
    【K8S 概述&架构组件&核心概念 01】
    python 单例模式
    Python协程yield
  • 原文地址:https://www.cnblogs.com/Roni-i/p/8619387.html
Copyright © 2020-2023  润新知