L2-023 图着色问题

原题链接

题解

说用k种颜色, 没说用少于k种

code

#include<bits/stdc++.h>
using namespace std;
vector<int> G[505];
int vis[505]={0};
int color[505]={0};
int v,e,k,n;
int solve()
{
    for(int i=1;i<=v;i++)
    {
        for(auto next:G[i])
        {
            if(color[i]==color[next]) return 0;
        }
    }
    return 1;
}
int main()
{
    cin>>v>>e>>k;
    for(int i=1;i<=e;i++)
    {
        int x,y;
        cin>>x>>y;
        G[x].push_back(y);
        G[y].push_back(x);
    }

    cin>>n;

    while(n--)
    {
        set<int> q;
        int maxs=0,mins=v+1;
        for(int i=1;i<=v;i++)
        {
            cin>>color[i];
            q.insert(color[i]);
            maxs=max(maxs,color[i]);
            mins=min(mins,color[i]);
        }
        if(mins>0&&maxs<=v&&q.size()==k&&solve()) puts("Yes");
        else puts("No");
    }
    return 0;
}

posted @ 2024-04-19 14:15  纯粹的  阅读(13)  评论(0)    收藏  举报