poj_2492 A Bug's Life
来源:互联网 发布:手机淘宝轻量版官网 编辑:程序博客网 时间:2024/04/29 12:28
原题链接:http://poj.org/problem?id=2492
分析:
题意分析:有N个bug,和M次描述,每次描述表示两个编号的bug互相喜欢。。问没有同性关系。
算法分析:多开一个sex数组,存对方的性别。这样同一个性别的bug就可以合并了。
我的代码:
#include<stdio.h>#include<string.h>#define MAXN 2005int f[MAXN];int sex[MAXN];int n,m;int find(int i){ if(i==f[i]) return i; else return f[i]=find(f[i]);}bool flag;void Union(int a,int b){ a=find(a); b=find(b); if(a!=b){ f[a]=b; }}void Solve(int a,int b){ int t1=find(a); int t2=find(b); if(sex[t1]==0) sex[t1]=t2; else{ if(t1==t2) { flag=true; // printf("OK?"); } else Union(sex[t1],t2); } if(sex[t2]==0) sex[t2]=t1; else{ if(t1==t2) flag=true; else Union(sex[t2],t1); }}int main(){ int t; scanf("%d",&t); for(int kase=1;kase<=t;kase++){ flag=false; //没发现有同性。 scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { sex[i]=0; //存对方的性别。 f[i]=i; } while(m--){ int a,b; scanf("%d%d",&a,&b); if(flag) continue; Solve(a,b); } printf("Scenario #%d:\n",kase); if(flag) printf("Suspicious bugs found!\n"); else printf("No suspicious bugs found!\n"); if(kase!=t) printf("\n"); } return 0;}
总结:真没从题意中看出每个case之间要空一行。PE了一次。
- poj_2492 A Bug's Life
- poj_2492 A Bug's Life (并查集)
- poj_2492 A Bug's Life(并查集)
- A Bug's Life
- A Bug's Life
- A Bug's Life
- A Bug's Life
- A Bug's Life
- A Bug's Life
- A Bug's Life
- A bug‘s life
- A Bug's Life
- A Bug's Life
- A Bug's Life
- A Bug's LifeA Bug's Life
- PKU2492 A Bug's Life
- pku2492 A Bug's Life
- pku2492 A Bug's Life
- 解决4.0触摸屏老是有个圈圈
- 代码中得到dp值
- 百度——地图API——Android—应用集成离线地图
- ACM进阶计划
- java笔试题--反转字符串
- poj_2492 A Bug's Life
- linux下邮件发送服务器日志
- 正则表达式
- 1:用队列对扑克牌排序
- 得到设备密度
- TFS 切换登录用户的方法
- 得到屏幕宽高
- Oracle 多字段取最大/最小值函数
- Exception starting filter struts2