hdu 1232 畅通工程
来源:互联网 发布:牵机药 知乎 编辑:程序博客网 时间:2024/06/12 01:43
主题思想: union set
union set 核心代码:
//init for(int i=1;i<=n;i++){ a[i]=i; h[i]=1; }int Find(int p){ if(a[p]==p) return p; a[p]=Find(a[p]);}void UN(int p,int q){ p=Find(p); q=Find(q); if(p!=q){ if(h[p]<h[q]){ a[q]=a[p]; h[p]=h[p]+h[q]; }else{ a[p]=a[q]; h[q]=h[q]+h[p]; } }}AC代码:
include
include
include
using namespace std;
const int maxn=1005;
int a[maxn];
int h[maxn];
int n,m;
int Find(int p){
if(a[p]==p) return p;a[p]=Find(a[p]);
}
void UN(int p,int q){
p=Find(p);q=Find(q);if(p!=q){ if(h[p]<h[q]){ a[q]=a[p]; h[p]=h[p]+h[q]; }else{ a[p]=a[q]; h[q]=h[q]+h[p]; }}
}
int main()
{
int p,q;
while(scanf(“%d”,&n)!=EOF){
if(n==0) break; //init for(int i=1;i<=n;i++){ a[i]=i; h[i]=1; } scanf("%d",&m); for(int i=1;i<=m;i++){ scanf("%d%d",&p,&q); UN(p,q); } int ans=0; for(int i=1;i<=n;i++){ if(a[i]==i) ans++; } printf("%d\n",ans-1);}return 0;
}
“`
阅读全文
0 0
- Hdu-1232 畅通工程
- hdu 1232 畅通工程
- hdu 1232 畅通工程
- hdu 1232 畅通工程
- HDU 1232 畅通工程
- hdu 1232 畅通工程
- hdu 1232 畅通工程
- hdu 1232 畅通工程
- hdu 1232 畅通工程
- Hdu 1232 畅通工程
- HDU-1232:畅通工程
- hdu 1232 畅通工程
- hdu 1232 畅通工程
- hdu - 1232 - 畅通工程
- hdu 1232 畅通工程
- hdu 1232畅通工程
- hdu 1232 畅通工程
- HDU 1232 畅通工程
- python编程快速上手-第六章实践项目解答
- virtualbox安装oracle linux后找不到eth0
- Mybatis源码详解之接口方法被执行流程源码解析
- C语言编程基本规范
- Maven私服
- hdu 1232 畅通工程
- 1003. Emergency (25)
- springMVC中的controller是否是单例
- 反转单链表的前k个结点
- final,finalize,finally的区别
- 排序算法——简单选择排序(Python&Java)
- 【51Nod1463】找朋友
- 数据结构思维 前言
- php 中抽象的方法和抽象类的定义 abstract