[hdu1213] How Many Tables
来源:互联网 发布:js获取本周第一天日期 编辑:程序博客网 时间:2024/05/16 07:32
题目链接
题解:求连通分支的个数.
两种方式:
1.可以求出一共有多少个根节点(即fa[i]==i的个数)
2.可以用原始连通分量数n 减去有效的合并次数。
即每次合并两个连通分量就会使得总的分量数目减少1.
#include <iostream>#include <cstdio>using namespace std;int n,m,p,q;int T,ans;int f[1005],rk[1005];inline int find(int x){ if(f[x]==x) return x; int t=find(f[x]); f[x]=t; return f[x];}inline void ready(){ for(int i=1;i<=n;i++) f[i]=i,rk[i]=0; ans=n;}inline void uniom(int p,int q){ int x=find(p),y=find(q); if(x==y) return ; ans--;//每合并一对,总数就-1 if(rk[x]>rk[y]) f[y]=x; else { f[x]=y; if(rk[x]==rk[y]) rk[y]++; } }inline void work(){ scanf("%d%d",&n,&m); ready(); for(int i=1;i<=m;i++) { scanf("%d%d",&p,&q); uniom(p,q); } printf("%d\n",ans);}int main(){ cin>>T; while(T--){ work(); } return 0;}
0 0
- HDU1213:How Many Tables
- HDU1213--How Many Tables
- hdu1213-How Many Tables
- hdu1213 How Many Tables
- hdu1213 How Many Tables
- HDU1213 How Many Tables
- hdu1213 How Many Tables
- How Many Tables hdu1213
- HDU1213---How Many Tables
- hdu1213 How Many Tables
- hdu1213 How Many Tables
- HDU1213 How Many Tables
- hdu1213 How Many Tables
- [hdu1213] How Many Tables
- HDU1213-How Many Tables
- hdu1213 How Many Tables
- HDU1213 How Many Tables
- HDU1213 How Many Tables
- iOS更改状态栏文字颜色
- AndroidStudio开发工具快捷键
- Hadoop参数汇总
- 穷举法解决组合问题2
- 彻底解决INSTALL_FAILED_UPDATE_INCOMPATIBLE的安装错误
- [hdu1213] How Many Tables
- android apk 打包时出现xxx is not translated
- Android语言世界化的过程中遇到的阿拉伯语波斯语的问题总结
- adb 端口不识别问题
- JSP中<base href="<%=basePath%>">作用
- 【结论】Dijkstra
- 关于kafka重新消费数据问题
- 穷举法解决组合问题3
- 策略模式-StrategyMode