• codeforces 1228D


    // 三点分图,还是挺简单的,讲下思路:先把所有的点分为3个集合,
    //judge下集合不能为空,集合内的点不能有连线,最后judge下边数
    #include<bits./stdc++.h>
    using namespace std;
    typedef long long i64;
    const int maxn = 1e5 + 32;
    int n,m,u,v,col[maxn];
    set<int> Grape[maxn];
    i64 arr[8];
    int main()
    {
        ios::sync_with_stdio(false);    cin.tie(0),cout.tie(0);
        cin>>n>>m;
        for(int i=0;i!=m;++i)
        {
            cin>>u>>v;
            Grape[u].insert(v);
            Grape[v].insert(u);
        }
        col[1] = 1;
        for(int i=2;i<=n;++i)
            if(!Grape[1].count(i))
                col[i] = 1;
        for(int i=2;i<=n;++i)
            if(!col[i])//如果节点i未被访问
            {
                col[i] = 2;//寻找一个集合2
                for(int j=1;j<=n;++j)
                {
                    if(!Grape[i].count(j))
                    {
                        if(col[j]==1)
                        {
                            cout<<-1<<'
    ';
                            return 0;
                        }
                        col[j] = 2;
                    }
                }
                break;
            }//2号标记
        for(int i=1;i<=n;++i)
            if(!col[i])
                col[i] = 3;
        for(int i=1;i<=n;++i)
        {
            for(auto v :Grape[i])
                if(col[v] == col[i])
                {
                    cout<<-1<<'
    ';
                    return 0;
                }
        }//集合内的边去重
        for(int i=1;i<=n;++i)
            ++arr[col[i]];
        if(!arr[1]||!arr[2]||!arr[3])
            cout<<"-1"<<'
    ';
        else if((arr[1]*arr[2]+arr[1]*arr[3]+arr[2]*arr[3])!=m)
            cout<<-1<<"
    ";
        else{
            for(int i=1;i<=n;++i)
                cout<<col[i]<<" ";
            cout<<'
    ';
        }
    }
    

      

    不怕万人阻挡,只怕自己投降。
  • 相关阅读:
    jenkins+jmeter结合使用
    Bean的前身今世&处理器&Aware
    Spring的profile属性
    XML的验证模式
    org.springframework.beans包
    packge-info.java
    字节码解释执行引擎
    invokedynamic指令
    多态方法调用的解析和分派
    运行时栈帧结构
  • 原文地址:https://www.cnblogs.com/newstartCY/p/11622734.html
Copyright © 2020-2023  润新知