首页 > 其他 > 详细

BZOJ 1116: [POI2008]CLO 并查集

时间:2019-04-18 00:47:07      阅读:142      评论:0      收藏:0      [点我收藏+]

成立时当且仅当每个联通块都有环存在。一个连通块若有m个点,则必有多于m条有向边,可用并查集来维护。

#include<cstdio>
#include<iostream>
#define R register int
#define pc(x) putchar(x)
const int N=100010;
using namespace std;
inline int g() {
    R ret=0,fix=1; register char ch; while(!isdigit(ch=getchar())) fix=ch==-?-1:fix;
    do ret=ret*10+(ch^48); while(isdigit(ch=getchar())); return ret*fix;
}
int n,m;
int fa[N],r[N];
bool flg;
int getf(int x) {return x==fa[x]?x:fa[x]=getf(fa[x]);}
signed main() {
    n=g(),m=g(); for(R i=1;i<=n;++i) fa[i]=i;
    for(R i=1;i<=m;++i) {
        R u=getf(g()),v=getf(g());
        if(u==v) r[u]=1;
        else fa[u]=v,r[v]|=r[u];
    } for(R i=1;i<=n;++i) if(!r[getf(i)]) {flg=true; break;}
    flg?(pc(N),pc(I),pc(E)):(pc(T),pc(A),pc(K)); pc(\n);
}

BZOJ 1116: [POI2008]CLO 并查集

原文:https://www.cnblogs.com/Jackpei/p/10727153.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!