POJ 1611 The Suspects (并查集)
2015-07-31 19:37
375 查看
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<vector> using namespace std; int vis_tuan[500+10]; int vis[30000+10]; int mat[30000+10][510]; int fa[30000+10]; int ans; int n,m; int find(int x) { return fa[x]==x?x:find(fa[x]); } void bin(int x,int y) //前小后大 { int fx=find(x); int fy=find(y); if(fx!=fy) { // printf("x %d fx %d y %d fy %d\n",x,fx,y,fy); // printf("%d %d\n",vis[fx],vis[fy]); if(fy==0) { vis[fy]+=vis[fx]; fa[fx]=fa[fy]; } else { vis[fx]+=vis[fy]; fa[fy]=fa[fx]; } } } int main() { int i,j,k; while(scanf("%d%d",&n,&m),n+m) { ans=0; int ok=0; //memset(vis_tuan,0,sizeof(vis_tuan)); memset(vis,0,sizeof(vis)); for(i=0;i<=n;i++) { vis[i]=1; fa[i]=i; } for(i=0;i<m;i++) { scanf("%d",&mat[i][0]); int tlen=mat[i][0]; for(j=1;j<=tlen;j++) { scanf("%d",&mat[i][j]); if(mat[i][j]==0) ok=1; } sort(mat[i]+1,mat[i]+tlen+1); for(j=2;j<=tlen;j++) { //printf(" %d ",mat[i][j]); bin(mat[i][1],mat[i][j]); } //printf("\n"); } printf("%d\n",vis[0]); /*if(ok==1) { int ret=0; for(i=0;i<n;i++) { if(find(i)==0) ret++; } printf("%d\n",ret); } else printf("0\n");*/ } return 0; }
相关文章推荐
- HDU-2187-悼念512汶川大地震遇难同胞——老人是真饿了
- c++中dynamic_cast的用
- poj 2236 Wireless Network(并查集)
- Error/Exception-01-hibernate(jar包冲突)--javax.persistence.OneToMany.orphanRemoval()Z异常
- linux服务器可以ping通,但是访问不了--Ip地址:端口--
- ACM
- S3C2440 framebuffer编程
- java中注解的使用与实例 (二)
- CS224d lecture 8札记
- Struts2中Theme与Template
- Leetcode #79 Word Search
- AutoConfig工具使用指南(转载)
- hdu 1695 GCD 莫比乌斯反演
- The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
- DP+矩阵快速幂 HDOJ 5318 The Goddess Of The Moon
- mysql的使用和sql语言的学习
- WINDOWS多线程-事件
- VMware之——安装CentOS6.5后无法连接网络的解决方案
- Hdu 5316 2015多校对抗赛三
- hiho1192 简单的树嵌入(构造题)