PAT 甲级 1154 Vertex Coloring

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhaohaibo_/article/details/88060137

题意:给出图和图上每个点的颜色,问是否满足 图上所有边的两个端点的颜色不相同


#include <iostream>
#include <cstring>
#include <set>
#include <vector>
using namespace std;

const int maxn = 10010;
int N, M, K;
set<int> s;
vector<pair<int, int> > E;
int color[maxn];

int main()
{
    ios::sync_with_stdio(false);
    cin >> N >> M;
    for (int i = 0; i < M; i ++ )
    {
        int a, b;
        cin >> a >> b;
        E.push_back({a, b});
    }

    cin >> K;
    while (K --)
    {
        s.clear();
        for (int i = 0; i < N; i ++ )
        {
            cin >> color[i];
            s.insert(color[i]);
        }
        bool flag = true;
        for (auto e : E)
        {
            if (color[e.first] == color[e.second])
            {
                flag = false;
                break;
            }
        }
        
        if(flag) cout << s.size() << "-coloring" << endl;
        else cout << "No" << endl;
    }
}

猜你喜欢

转载自blog.csdn.net/zhaohaibo_/article/details/88060137
今日推荐