首页 > 其他分享 >Codeforces Round #589 (Div. 2) D

Codeforces Round #589 (Div. 2) D

时间:2022-12-25 00:33:06浏览次数:57  
标签:cnt int void Codeforces 589 ++ Div find

D. Complete Tripartite

题链
与其他题解不同
我首先发现的是没有相连的一定是同一组
那么我们直接对于整个数组
遍历一遍 将与1同组的搞出来 要是下一个位置已经有组了 我们就继续
这样搞出来了几组
但是这些组仅仅是与他们的组最前面的是一样的
可能有个别与其他组的少一条边 与自己组的多一条边
这样是不合法的
我们只有组内的和“组长”是一样的才行
这里分组用的并查集

map<int,int>g[N];
int p[N];
int find(int x){
    if(p[x]!=x)p[x]=find(p[x]);
    return p[x];
}
void merge(int x, int y){
    p[find(x)] = find(y);
}
void solve(){
    int n,m;cin>>n>>m;
    for(int i=1;i<=m;i++){
        int u,v;cin>>u>>v;
        g[u][v]++;
        g[v][u]++;
    }
    for(int i=1;i<=n;i++)p[i]=i;
    int cnt=0;
    for(int i=1;i<=n;i++){
        if(p[i]==i){
            cnt++;
            if(cnt==4){
                cout<<-1<<endl;
                return;
            }
            for(int j=i+1;j<=n;j++){
                if(g[i].count(j) == 0) {
                    merge(j, i);
                    //这一步一共就是O(m)的
                    if(g[j]!=g[i]){
                        cout << -1 << endl;
                        return;
                    }
                }
            }
        }
    }
    set<int>s;
    for(int i=1;i<=n;i++){
        s.insert(p[i]);
    }
    if(s.size()!=3){
        cout<<-1<<endl;
    }else{
        map<int,int>mp;
        cnt=1;
        for(auto c:s)mp[c]=cnt++;
        for(int i=1;i<=n;i++){
            cout<<mp[p[i]]<<' ';
        }
    }
}

标签:cnt,int,void,Codeforces,589,++,Div,find
From: https://www.cnblogs.com/ycllz/p/17003586.html

相关文章

  • POJ 1014 Dividing
    POJ1014Dividing题意:多重背包问题,给出若干物品,求是否能分成价值相同的两堆思考:求出总和\(sum\)之后,如果\(sum\)是奇数则一定不可能,然后如果我们能凑出\(sum/......
  • Codeforces Round #770 (Div. 2)B,C
    CodeforcesRound#770(Div.2)B,C还是惨绝人寰的只做了一个题,ε=(´ο`*)))唉BB这一道题大意是是首先有一个d,然后有n个操作,从1到n,每一次我们都需要选择让d=d+a[i]还是d......
  • Codeforces 1097 G Vladislav and a Great Legend 题解 (DP)
    题目链接思路首先看到这种求\(x^k\)形式的,直接无脑转下降幂:\(x^k=\sum_{i=1}^kS2(k,i)\cdotx^{\underline{i}}\),其中\(S2\)表示第二类斯特林数,\(x^{\underlinei}\)表......
  • Codeforces 1097 G Vladislav and a Great Legend 题解 (DP)
    题目链接思路首先看到这种求\(x^k\)形式的,直接无脑转下降幂:\(x^k=\sum_{i=1}^kS2(k,i)\cdotx^{\underline{i}}\),其中\(S2\)表示第二类斯特林数,\(x^{\underlinei}\)表......
  • Codeforces 1097 G Vladislav and a Great Legend 题解 (DP)
    题目链接思路首先看到这种求\(x^k\)形式的,直接无脑转下降幂:\(x^k=\sum_{i=1}^kS2(k,i)\cdotx^{\underline{i}}\),其中\(S2\)表示第二类斯特林数,\(x^{\underlinei}\)表......
  • Codeforces 1097 G Vladislav and a Great Legend 题解 (DP)
    题目链接思路首先看到这种求\(x^k\)形式的,直接无脑转下降幂:\(x^k=\sum_{i=1}^kS2(k,i)\cdotx^{\underline{i}}\),其中\(S2\)表示第二类斯特林数,\(x^{\underlinei}\)表......
  • 《Social Diversity and Social Preferences in Mixed-Motive Reinforcement Learning
    混合动机强化学习中的社会多样性与社会偏好总结:本质是在研究当智能体群体中的个体具有独特性质时在困境强化学习中对结果的影响。提出了一个社会价值偏向取向的概念来使......
  • Codeforces Round #836 (Div. 2)构造场
    今天的CF居然是这样的全是构造题,顺便把牛客上的一道构造写了C题待补链接......
  • Codeforces 1630 E Expected Components 题解 (组合数学)
    题目链接首先明确概念:排列。指的就是一个把数组a重排得到的序列,两个排列相等当且仅当它们对应位全都相等环形排列。指的是把数组a重排得到的序列首尾相接得到的环形数......
  • Codeforces Global Round 24(B,C)
    CodeforcesGlobalRound24(B,C)这一次vp真是大失所望,我只写了A,第二题最后发现离那个答案很近了,但就是没想到,看来还是功力不到家呀B这道题的大意是有一个数组,我们可......