L2-023 圖著色問題

纯粹的發表於2024-04-19

原題連結

題解

說用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;
}

相關文章