War - UVa 10158 并查集
来源:互联网 发布:海岛奇兵潜艇升级数据 编辑:程序博客网 时间:2024/05/21 17:01
题意:朋友的朋友是朋友,朋友的敌人是敌人,敌人的敌人是朋友。
思路:并查集模拟。
AC代码如下:
#include<cstdio>#include<cstring>using namespace std;int n,p[10010],en[10010];int find(int x){ return p[x]==x ? x :p[x]=find(p[x]);}int main(){ int i,j,k,u,v,u2,v2; scanf("%d",&n); for(i=1;i<=n;i++) p[i]=i; while(~scanf("%d%d%d",&k,&u,&v) && k>0) { u++;v++; u=find(u); v=find(v); if(k==1) { if(en[u]==v) printf("-1\n"); else { p[v]=u; u2=find(en[u]); v2=find(en[v]); if(u2>0 && v2>0) p[v2]=u2; else if(v2>0) u2=v2; en[u]=u2; en[u2]=u; } } else if(k==2) { if(u==v) printf("-1\n"); else if(en[u]!=v) { if(en[u]>0) { u2=find(en[u]); p[u2]=v; } if(en[v]>0) { v2=find(en[v]); p[v2]=u; } en[u]=v; en[v]=u; } } else if(k==3) { if(u==v) printf("1\n"); else printf("0\n"); } else if(k==4) { if(en[u]==v) printf("1\n"); else printf("0\n"); } }}
0 0
- uva 10158 - War(并查集)
- UVA 10158 - War(并查集)
- UVa 10158 War / 并查集
- UVA 10158 War(并查集)
- War - UVa 10158 并查集
- UVA 10158 War (并查集)
- uva 10158 War (并查集)
- UVA---10158-War(并查集)
- UVA 10158 War 并查集
- UVa - 10158 - War ( 并查集 )
- uva 10158 War(并查集的简单应用)
- UVA - 10158 War 并查集升级版
- uva10158(War)并查集
- 【】Star War 并查集
- UVA10158 - War(并查集)
- CSU1601: War(并查集)
- CSU1601: War(并查集)
- uva 10158(并查集)
- 使用libcurl发送post请求
- Android screenOrientation 屏幕方向的设定与控制
- 【安装系统】Raspberry B+上手教程--自己梳理,亲测有效
- 二级列表ExpandableListView
- 弹窗效果
- War - UVa 10158 并查集
- C语言:关于实型精确度和取值范围的计算方法
- 博客开通感言
- 正则表达式匹配换行符
- HDU--2562奇偶位互换【水题】
- hibernate load()
- leetcode Search for a Range
- CSS3 Filter的十种特效
- 学习笔记之-Android架构和特性