hdoj 1232畅通工程

来源:互联网 发布:php模块化设计 编辑:程序博客网 时间:2024/05/01 07:04

畅通工程

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 38118    Accepted Submission(s): 20206


Problem Description
某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?
 

Input
测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是城镇数目N ( < 1000 )和道路数目M;随后的M行对应M条道路,每行给出一对正整数,分别是该条道路直接连通的两个城镇的编号。为简单起见,城镇从1到N编号。
注意:两个城市之间可以有多条道路相通,也就是说
3 3
1 2
1 2
2 1
这种输入也是合法的
当N为0时,输入结束,该用例不被处理。
 

Output
对每个测试用例,在1行里输出最少还需要建设的道路数目。
 

Sample Input
4 21 34 33 31 21 32 35 21 23 5999 00
 

Sample Output
102998
Hint
Hint
Huge input, scanf is recommended.
最短路径模板题,只需求树的数量,数量减一就是所修的路数;
看代码: 写了两种代码:
#include<stdio.h>#define max 60000int set[max];int country,road;struct line{    int begin;    int end;}num[max];int find(int p)//寻找根节点 {    int t;    int child=p;    while(p!=set[p])    p=set[p];    while(child!=p)    {        t=set[child];        set[child]=p;        child=t;    }    return  p;}void merge(int x,int y)//合并 {    int fx=find(x);    int fy=find(y);    if(fx!=fy)    set[fx]=fy;}int main(){    int i,j;    while(scanf("%d",&country)!=EOF&&country)    {        scanf("%d",&road);        int k=0;        for(i=1;i<=country;i++)         set[i]=i;         for(i=1;i<=road;i++)          {              scanf("%d%d",&num[i].begin ,&num[i].end);          }          for(i=1;i<=road;i++)           {               if(find(num[i].begin )!=find(num[i].end ))//判断是否成环                merge(num[i].begin ,num[i].end );           }           for(i=1;i<=country;i++)//求树的数量             {                if(set[i]==i)                k++;            }        printf("%d\n",k-1);    }    return 0;}
原题目:hdoj 1232畅通工程


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 狗跳蚤会传染人怎么办 猫咪被跳蚤咬了怎么办 被老鼠跳蚤咬了怎么办 猫猫身上有跳蚤怎么办 狗被其他狗咬了怎么办 被土狗咬了出血怎么办 狗咬了有点破皮怎么办 遇到咬人的狗怎么办 自己的狗咬伤了怎么办 被蚂蚁咬了很痒怎么办 家里有蚂蚁怎么办能除根 被虫咬了红肿很痒怎么办 身体被虫子咬痒怎么办 手被乌龟咬破了怎么办 被乌龟咬出血了怎么办 被巴西乌龟咬了怎么办 孩子被乌龟咬了怎么办 如果被乌龟咬了怎么办 宝宝被乌龟咬了怎么办 上高中了偏文怎么办 上高中了很烦该怎么办 螳螂生完孩子后怎么办 小区门禁卡丢了怎么办 开门感应卡坏了怎么办 我的螃蟹生卵了怎么办 剑三账号被冻结怎么办 疤痕留下的红印怎么办 马桶刷子沾屎了怎么办 马桶上水管堵了怎么办 孕妇吃了姑娘果怎么办 出差被领导睡了怎么办 智融财富 跑路了怎么办 秒钱要是跑路了怎么办 新买的皮衣皱了怎么办 话说多了伤元气怎么办 话说多了嗓子哑怎么办 桂附地黄丸上火怎么办 乐视倒闭了会员怎么办 汽车上沾了水泥怎么办 汽车上的水泥点怎么办 小米4c启动不了怎么办