HDU__A - How Many Tables(第一天)
来源:互联网 发布:linux 获取系统时区 编辑:程序博客网 时间:2024/04/23 22:56
// 姿态1,:记录每个根结点子结点数
<span style="font-size:14px;">#include<stdio.h>const int Max=1000;int tab[Max+10];int total[Max+10];int find(int a){ if(tab[a]!=a) tab[a]=find(tab[a]); return tab[a];}void Merge(int a,int b){ int fx=find(a); int fy=find(b); if(fx==fy) return; tab[fx]=fy; total[fy]+=total[fx]; total[fx]=1;}int main(){ int T; while(scanf("%d",&T)!=EOF){ for(int h=0;h<T;h++){ int M,N; int sum=0,t,t1,cnt=0; scanf("%d%d",&N,&M); for(int i=0;i<N;i++){ tab[i]=i; total[i]=1; } for(int i=0;i<M;i++){ int h,s; scanf("%d%d",&h,&s); Merge((h-1),(s-1)); } for(int i=0;i<N;i++) printf("%d ",tab[i]); printf("\n"); for(int i=0;i<N;i++) printf("%d ",total[i]); printf("\n"); for(int i=0;i<N;i++){ if(total[i]!=1){ sum+=total[i]; cnt++; } } t=N-sum+cnt; printf("%d\n",t); } }}</span>
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
<span style="font-size:14px;"><span style="background-color: rgb(240, 240, 240);">// 姿势2:初始化 集合个数,merge成功后-1</span></span>
<span style="font-size:14px;">#include<stdio.h>const int Max=1000;int tab[Max+10];int find(int a){ if(tab[a]!=a) tab[a]=find(tab[a]); return tab[a];}int main(){ int T; while(scanf("%d",&T)!=EOF){ for(int h=0;h<T;h++){ int M,N; scanf("%d%d",&N,&M); int groups=N; for(int i=0;i<N;i++) tab[i]=i; for(int i=0;i<M;i++){ int h,s; scanf("%d%d",&h,&s); int fx=find(h-1); int fy=find(s-1); if(fx!=fy){ tab[fx]=fy; groups--; } } printf("%d\n",groups); } }}</span>
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
<span style="font-size:14px;">//姿势3:求根节点的个数,就是集合个数</span>
<span style="font-size:14px;">#include<stdio.h>const int Max=1000;int tab[Max+10];int find(int a){ if(tab[a]!=a) tab[a]=find(tab[a]); return tab[a];}void Merge(int a,int b){ int fx=find(a); int fy=find(b); if(fx==fy) return; tab[fx]=fy;}int main(){ int T; while(scanf("%d",&T)!=EOF){ for(int h=0;h<T;h++){ int M,N; int cnt=0; scanf("%d%d",&N,&M); for(int i=0;i<N;i++) tab[i]=i; for(int i=0;i<M;i++){ int h,s; scanf("%d%d",&h,&s); Merge((h-1),(s-1)); } for(int i=0;i<N;i++){ if(tab[i]==i){ cnt++; } } printf("%d\n",cnt); } }}</span>
0 0
- HDU__A - How Many Tables(第一天)
- How Many Tables()
- How Many Tables(hdu1213)
- hdu 1213 How Many Tables(数据结构)
- How Many Tables(并查集)
- How Many Tables(并查集)
- How Many Tables(并查集)
- How Many Tables
- HDOJ How Many Tables
- hduoj1213:How Many Tables
- hdu How Many Tables
- HDU1213:How Many Tables
- HDU1213--How Many Tables
- hdu1213-How Many Tables
- hdu1213 How Many Tables
- HDU How Many Tables
- hdu_1213 How Many Tables
- hdu1213 How Many Tables
- 用jq如何把一个机构树拦腰分成两列。
- Tint Color的理解和APP简单的主题化
- 一道用到二进制位加记忆化搜索的dp题
- 编译成ASCII码,加上_T()或TEXT()变成UNICODE
- 二叉树学习之哈弗曼编码
- HDU__A - How Many Tables(第一天)
- java PLAY框架学习笔记--入门
- Token验证失败
- UITextField可以设置右边和右边的图片
- Java中访问权限控制
- iOS弹键盘、收键盘
- leetcode - ZigZag Conversion
- 当类是ToolBar时候,设置代理不能用delegate关键字
- 线程(四)Monitor