POJ-1611-The Suspects
2013-07-25 11:14
197 查看
题目大意是说有n个组,每个组有对应的人(一个人可能在多个组),若有一个人感染SARS,则对应组别的所有人都感染上SARS,题目要求你求出最终能感染此病毒的有多少人
思路:
我的做法是用并查集,把每个组也当作是一个点,则最多有500个点,人的编号就从501开始,在读取数据的时候把每个组内的人组标志设为组名,因为题目中说病毒从1号开始传播,所以最后只需要统计501号人相同的集合有多少人即可。
代码:
思路:
我的做法是用并查集,把每个组也当作是一个点,则最多有500个点,人的编号就从501开始,在读取数据的时候把每个组内的人组标志设为组名,因为题目中说病毒从1号开始传播,所以最后只需要统计501号人相同的集合有多少人即可。
代码:
#include<cstdio> #include<cstring> #include<iostream> using namespace std; const int maxn=40510; int ans,n,m,p[maxn]; int find(int x) { if(p[x]==-1) return x; return p[x]=find(p[x]); } int main() { while(scanf("%d%d",&n,&m)&&(n+m)) { ans=0; memset(p,-1,sizeof(p)); for(int i=0;i<m;i++) { int k; scanf("%d",&k); for(int j=0;j<k;j++) { int ita; scanf("%d",&ita); ita+=501; int x=find(i); int y=find(ita); if(x!=y) p[x]=y; } } int pos=find(501); for(int i=501;i<=n+501;i++) if(find(i)==pos) ans++; printf("%d\n",ans); } return 0; }
相关文章推荐
- poj1611 - The Suspects
- POJ 1611 The Suspects(并查集)
- POJ1611 The Suspects (并查集)
- POJ - 1611 The Suspects(简单并查集)
- POJ 1611 The Suspects(并查集)
- POj 1611 The Suspects
- POJ 1611-The Suspects(并查集-同一集合)
- POJ-1611-The Suspects
- POJ 1611 The Suspects (并查集)
- POJ 1611 The Suspects(简单模板题)
- poj 1611 The Suspects(并查集模板题)
- POJ - 1611 The Suspects (并查集 查找同一集合元素)
- poj-1611-The Suspects(水并查集)
- POJ 1611 The Suspects (并查集)
- POJ 1611 The Suspects(并查集)
- POJ 题目1611 The Suspects(简单并查集,带权值)
- POJ - 1611 The Suspects
- POJ 1611 The Suspects(并查集)
- Poj 1611 The Suspects(并查集
- poj1611——The Suspects