hdu1232 并查集

原创 2015年11月17日 22:06:05

虽然是很水很水很水很水的题,但是我的目标就是把A过的题都贴在博客上,所以如果有大神看见了小人的博客,还忘轻喷。



#include <cstdio>
#include <iostream>

using namespace std;

const int MAX_N = 1005;
int par[MAX_N];  //从1开始计算
int height[MAX_N];
int visited[MAX_N];
int N,M;


void init(int n){
    for(int i=1; i<=n; i++){
        par[i] = i;
        height[i] = 0;
        visited[i] = 0;
    }
}

int find(int x){
    if(x == par[x]){
        return x;
    }else{
        return par[x] = find(par[x]);
    }
}

void  unite(int x, int y){
    x = find(x);
    y = find(y);
    if(x == y)return;

    if(height[x]<height[y]){
        par[x] = y;
    }else{
        par[y] = x;
        if(height[x] == height[y])height[x]+=1;
    }
}

int main(){
    int fir,sec;
    int ans;
    while(true){
        scanf("%d",&N);
        if(N==0)break;
        scanf("%d",&M);
        ans = 0;
        init(N);
        for(int i=1; i<=M; i++){
            scanf("%d%d", &fir, &sec);
            unite(fir,sec);
        }
        int temp;
        for(int i=1;i<=N; i++){
            temp = find(i);
            if(visited[temp] == 0){
                ans++;
                visited[temp] = 1;
            }
        }
        cout << ans-1<<endl;
    }
}


版权声明:虽然为本人原创,但是写得真是渣,想转就转,反正我也不是鸣人。

HDU1232 畅通工程 并查集

这题是并查集的简单运用。我所利用的并查集没有经过优化。只用到了初始化(每个元素都是一个集合)、查找(某个 元素所在的集合,集合以根节点标志)、合并(两集合不属于同一集合则合并) 这题的主要思想在于...
  • Lulipeng_cpp
  • Lulipeng_cpp
  • 2012年06月25日 11:03
  • 4971

HDU1232——畅通工程(并查集)

Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只...
  • blue_skyrim
  • blue_skyrim
  • 2015年12月04日 18:32
  • 1359

并查集hdu1232

应该是最基本的题 开始还是没有理解透彻 没有理解透彻就不要急着做题 并查集说白了就是把所有的点看看能归成几个集 合 所以首先判断这两点是否在一个集合范围内 如果没在一个集合范围内 就把小的...
  • a197p
  • a197p
  • 2015年07月26日 08:11
  • 381

hdu1232并查集

这是一道很基础的并查集的题目
  • hhq420684
  • hhq420684
  • 2014年07月30日 14:14
  • 447

并查集—HDU1232

一看到题目,很明显的并查集嘛,走起走起。 #include int bin[1002]; int findx(int x)//用来找每个节点的根节点 { int r=x; whil...
  • heb1c
  • heb1c
  • 2016年11月20日 12:17
  • 197

并查集-hdu1232

并查集的水题,模板一套,基本什么都不用改。 代码如下: #include #define MAXN 1010 int root[MAXN], ans; int Find(int x) { ...
  • Move_now
  • Move_now
  • 2016年11月02日 00:32
  • 162

并查集-HDU1232

并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。 来看一个实例,杭电1232畅通工程 首先在地图上给你若干个城镇,这些...
  • u012848631
  • u012848631
  • 2015年05月08日 23:36
  • 450

hdu1232 并查集

最简单的并查集,先merge 再find有多少个根 输入n,m,那是城市个数,m是道路个数 输入m组 每组两个城市相连通  问还需要多少条路让所有道路都连通。...
  • u012550356
  • u012550356
  • 2014年01月31日 23:01
  • 612

HDU1232(并查集)

畅通工程 Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通...
  • the_love_story
  • the_love_story
  • 2016年08月09日 19:51
  • 172

HDU1232并查集

HDU 1232(并查集) 有道路联通的可以看作一个区域,给出一些道路的联通关系,求出有多少区域不连通; 好吧,我承认我照着模板都敲错了...(打死)!! #includ...
  • u013757659
  • u013757659
  • 2014年04月12日 19:02
  • 225
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdu1232 并查集
举报原因:
原因补充:

(最多只允许输入30个字)