Poj 2492 A Bug's Life
来源:互联网 发布:java多态的实现方式 编辑:程序博客网 时间:2024/05/21 14:09
题目大意:输入一个数t,表示测试组数。然后每组第一行两个数字n,m,n表示有n只昆虫,编号从1—n,m表示下面要输入m行交配情况,每行两个整数,表示这两个编号的昆虫为异性,要交配。要求统计交配过程中是否出现冲突,即是否有两个同性的昆虫发生交配。
思路:并查集,和1703几乎一样的思路。
#include <iostream>using namespace std;#include <memory.h>#include <stdio.h>// Model 1const int MAXSIZE = 2010;int rank[MAXSIZE];//rank[x]表示x的秩int parent[MAXSIZE];int n;//集合元素,从1到nint m;int opposite[MAXSIZE];/* 查找x元素所在的集合,回溯时压缩路径*/int FindSet(int x) {if (x!=parent[x])parent[x]=FindSet(parent[x]);return parent[x];}//Union按秩合并,即合并的时候将元素少的集合合并到元素多的集合中,这样合并之后树的高度会相对较小//通过秩rank的大小来衡量元素的多少void Union(int root1, int root2) {int x=FindSet(root1),y=FindSet(root2);if (x==y)return;if (rank[x]>rank[y])parent[y]=x;else {parent[x]=y;if (rank[x]==rank[y])++rank[y];}}void Initialization() {int i;memset(rank,0,sizeof(rank));memset(opposite,0,sizeof(opposite));for (i=1;i<=n;i++)parent[i]=i;}int main(){int case_num,case_ctr,i,j;int flag;int x,y;scanf("%d",&case_num);for (case_ctr=1;case_ctr<=case_num;case_ctr++) {flag=1;scanf("%d%d",&n,&m);Initialization();for (i=0;i<m;i++) {scanf("%d%d",&x,&y);if (flag==1) {if (FindSet(x)==FindSet(y))flag=0;if (opposite[x]==0&&opposite[y]==0) {opposite[x]=y;opposite[y]=x;}else if (opposite[x]==0) {opposite[x]=y;Union(x,opposite[y]);}else if (opposite[y]==0) {opposite[y]=x;Union(y,opposite[x]);}else {Union(x,opposite[y]);Union(y,opposite[x]);}}}printf("Scenario #%d:\n",case_ctr);if (flag==1) printf("No suspicious bugs found!\n");elseprintf("Suspicious bugs found!\n");printf("\n");}return 0;}
- poj 2492 A Bug's Life
- POJ-2492 A Bug's Life
- Poj 2492 A Bug's Life
- poj 2492 A Bug's Life
- POJ 2492 - A Bug's Life
- POJ 2492 A Bug's Life
- POJ-2492-A Bug's Life
- poj 2492 A Bug's Life
- poj 2492 A Bug's Life
- poj 2492 A Bug's Life
- POJ 2492 A Bug's Life
- poj 2492 A Bug's Life
- POJ-2492-A Bug's Life
- poj 2492 A Bug's Life
- poj 2492 A Bug's Life
- POJ 2492 A Bug's Life
- POJ 2492 A Bug's Life
- POJ 2492 A Bug's Life
- Linux-world-2012-January->16(mini2440 uboot201103 系统移植)->3(成功修正 machine ID problem!)-3
- 442 - Matrix Chain Multiplication***
- 10152 - ShellSort
- 安装完Fedora 16 您需要做什么?
- Fedora16安装后的工作
- Poj 2492 A Bug's Life
- 540 - Team Queue***
- ext中联动combo远程加载选中的解决
- 关于object类
- Android日记之2012/01/20(公告)
- Poj 2524 Ubiquitous Religions
- Python 去除列表中重复的元素
- 2012-Linux->17 Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,2)
- 分享读取各大主流邮箱通讯录(联系人)、 MSN好友列表的的功能【升级版(2.0)】 .net版