Description

某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通project”的目标是使全省不论什么两个城镇间都能够实现交通(但不一定有直接的道路相连。仅仅要互相间接通过道路可达就可以)。问最少还须要建设多少条道路? 
 

Input

測试输入包括若干測试用例。每一个測试用例的第1行给出两个正整数。各自是城镇数目N ( < 1000 )和道路数目M。随后的M行相应M条道路。每行给出一对正整数。各自是该条道路直接连通的两个城镇的编号。

为简单起见。城镇从1到N编号。 

注意:两个城市之间能够有多条道路相通,也就是说

3 3

1 2

1 2

2 1

这样的输入也是合法的

当N为0时,输入结束,该用例不被处理。 

 

Output

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

Sample Input

  1. 4 2
  2. 1 3
  3. 4 3
  4. 3 3
  5. 1 2
  6. 1 3
  7. 2 3
  8. 5 2
  9. 1 2
  10. 3 5
  11. 999 0
  12. 0
  13. #include<iostream>
  14. #include<cstring>
  15. using namespace std;
  16. const int max1=1010;
  17.  int f[max1];
  18.  int find(int a)
  19.  {
  20. 	 if(f[a]==-1) return a;
  21. 	 else return f[a]=find(f[a]);
  22.  }
  23.  void bing(int a,int b)
  24.  {
  25. 	 int t1,t2;
  26. 	 t1=find(a);
  27. 	 t2=find(b);
  28. 	 if(t1!=t2)
  29. 		 f[t1]=t2;
  30.  }
  31. int main()
  32. {
  33. 	int i,j,k,m,n;
  34. 	while(cin>>n&&n)
  35. 	{
  36. 		cin>>m;
  37. 		memset(f,-1,sizeof(f));
  38.      for(i=1;i<=m;i++)
  39. 	 {
  40. 		 cin>>j>>k;
  41. 		 bing(j,k);
  42. 	 }
  43. 	 int ans=0;
  44. 	 for(i=1;i<=n;i++)
  45. 	 {
  46. 		// cout<<f[i]<<' ';
  47. 		 if(f[i]==-1)
  48. 			 ans++;
  49. 	 }
  50. 		 cout<<ans-1<<endl;
  51. 	}
  52. return 0;
  53. }
 

版权声明:本文博主原创文章。博客,未经同意不得转载。

畅通project的更多相关文章

  1. HDU1863 畅通project 【最小生成树Prim】

    畅通project Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  2. HDU 1863:畅通project(带权值的并查集)

    畅通project Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  3. 畅通project(杭电1863)

    畅通project Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  4. 杭电1874畅通project绪

    畅通project续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  5. HDU 1863 畅通project (最小生成树是否存在)

    题意 中文 入门最小生成树  prim大法好 #include<cstdio> #include<cstring> using namespace std; const int ...

  6. ACM-最小生成树之畅通project——hdu1863

    ***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...

  7. 杭电1233还是畅通project

    还是畅通project Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  8. hdu 1233(还是畅通project)(prime算法,克鲁斯卡尔算法)(并查集,最小生成树)

    还是畅通project Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  9. HDU 1243 畅通project 并査集

    Total Submission(s): 31033    Accepted Submission(s): 16313 Problem Description 某省调查城镇交通状况,得到现有城镇道路统 ...

随机推荐

  1. HQL查询

    HQL ,Hibernate Query Language ,是Hibernate查询语言,不直接操作数据表,而是操作实体类,根据实体类和对应数据表中的映射关系,查找数据. 下面是hql的基本步骤: ...

  2. 序列化和持久化 merge方法和saveOrUpdate方法

    merge方法和saveOrUpdate方法的区别 merge方法是把我们提供的对象转变为托管状态的对象:而saveOrUpdate则是把我们提供的对象变成一个持久化对象:说的通俗一点就是:saveO ...

  3. javascript "非法值"检验.

    <script type="text/javascript"> function getCoord() { var x = document.getElementByI ...

  4. [c#]asp.net开发微信公众平台(2)多层架构框架搭建和入口实现

    上篇已经设计出比较完善的数据库了,这篇开始进入代码.  首先把上篇设计的数据库脚本在数据库中执行下,生成数据库,然后在VS中建立项目,为了方便理解和查看,我设计的都是很直白的类名和文件名,没有命名空间 ...

  5. root用户安装的软件在普通用户不生效

    root安装完成后,有时候需要进入普通用户,修改以下文件才能生效: .在这个文件中添加环境变量 vim ~/.bash_profile .生效 source ~/.bash_profile

  6. 在MVC中利用uploadify插件实现上传文件的功能

    趁着近段的空闲时间,开发任务不是很重,就一直想把以前在仓促时间里所写的多文件上传功能改一下,在网上找了很多例子,觉得uploadify还可以,就想用它来试试.实现自己想要的功能.根据官网的开发文档,同 ...

  7. C#time 闹钟

    private void timer2_Tick(object sender, EventArgs e) { lbltime.Text = DateTime.Now.ToString(); & ...

  8. 捷易拍与springMVC系统结合

    1. 捷易拍高拍仪在jsp页面的调用 使用ActiveX插件的方式处理解决此问题,捷易拍公司提供了支持IE8以上的32位浏览器的插件,安装插件后,我们可以使用Object标签,使用高拍仪 注意: 1. ...

  9. php如何实现上传图片文件,并替换

    首先建立两个文件: change.html 和 change.php change.html 文件的表单代码如下: <html><head> <title>chan ...

  10. CSAPP--存储器及程序的局部性

    作为一名程序员,你需要理解计算机存储系统的层次结构,他对应用程序的性能有着巨大的影响,如果程序所需要的数据存储在cpu的寄存器中,那么指令在执行期间,就可以花费零个周期来进行访问,而在Cache中则需 ...