畅通project

原文请訪问:p=174">http://xiaoshig.sinaapp.com/?p=174

Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%I64d
& %I64u

Submit cid=1088#status//B/0" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" style="font-family:Verdana,Arial,sans-serif; font-size:1em; border:1px solid rgb(211,211,211); color:rgb(85,85,85); display:inline-block; position:relative; padding:0px; margin-right:0.1em; zoom:1; overflow:visible; text-decoration:none">Status

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

4 2
1 3
4 3
3 3
1 2
1 3
2 3
5 2
1 2
3 5
999 0
0
#include<iostream>
#include<cstring>
using namespace std;
const int max1=1010;
 int f[max1];
 int find(int a)
 {
	 if(f[a]==-1) return a;
	 else return f[a]=find(f[a]);
 }
 void bing(int a,int b)
 {
	 int t1,t2;
	 t1=find(a);
	 t2=find(b);
	 if(t1!=t2)
		 f[t1]=t2;
 }
int main()
{
	int i,j,k,m,n;
	while(cin>>n&&n)
	{
		cin>>m;
		memset(f,-1,sizeof(f));
     for(i=1;i<=m;i++)
	 {
		 cin>>j>>k;
		 bing(j,k);
	 }
	 int ans=0;
	 for(i=1;i<=n;i++)
	 {
		// cout<<f[i]<<' ';
		 if(f[i]==-1)
			 ans++;
	 }
		 cout<<ans-1<<endl;
	}
return 0;
}

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

时间: 2024-08-03 04:13:11

畅通project的相关文章

畅通project续HDU杭电1874【dijkstra算法 || SPFA】

http://acm.hdu.edu.cn/showproblem.php?pid=1874 Problem Description 某省自从实行了非常多年的畅通project计划后.最终修建了非常多路.只是路多了也不好,每次要从一个城镇到还有一个城镇时,都有很多种道路方案能够选择,而某些方案要比还有一些方案行走的距离要短非常多.这让行人非常困扰. 如今,已知起点和终点,请你计算出要从起点到终点.最短须要行走多少距离. Input 本题目包括多组数据.请处理到文件结束. 每组数据第一行包括两个正

hdu1874 畅通project续 最短路 floyd或dijkstra或spfa

Problem Description 某省自从实行了非常多年的畅通project计划后.最终修建了非常多路.只是路多了也不好,每次要从一个城镇到还有一个城镇时,都有很多种道路方案能够选择.而某些方案要比还有一些方案行走的距离要短非常多.这让行人非常困扰. 如今,已知起点和终点.请你计算出要从起点到终点,最短须要行走多少距离. Input 本题目包括多组数据,请处理到文件结束. 每组数据第一行包括两个正整数N和M(0< N<200,0 < M<1000),分别代表现有城镇的数目和已

HDU 1243 畅通project 并査集

Total Submission(s): 31033    Accepted Submission(s): 16313 Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通project"的目标是使全省不论什么两个城镇间都能够实现交通(但不一定有直接的道路相连,仅仅要互相间接通过道路可达就可以).问最少还须要建设多少条道路? Input 測试输入包括若干測试用例.每一个測试用例的第1行给出两个正整数,各自是

杭电1863畅通project

畅通project Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 21240    Accepted Submission(s): 9142 Problem Description 省政府"畅通project"的目标是使全省不论什么两个村庄间都能够实现公路交通(但不一定有直接的公路相连,仅仅要能间接通过公路可达就可以).经过

hdu 1233 还是畅通project (克鲁斯卡尔裸题)

还是畅通project                                              Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 32795    Accepted Submission(s): 14769 Problem Description 某省调查乡村交通状况.得到的统计表中列出了随意两村庄间的距

HDU1863_畅通project【Prim】【并查集】

畅通project Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 17867    Accepted Submission(s): 7552 Problem Description 省政府"畅通project"的目标是使全省不论什么两个村庄间都能够实现公路交通(但不一定有直接的公路相连,仅仅要能间接通过公路可达就可以). 经

hdu 1879 继续畅通project

继续畅通project Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 13284    Accepted Submission(s): 5721 Problem Description 省政府"畅通project"的目标是使全省不论什么两个村庄间都能够实现公路交通(但不一定有直接的公路相连.仅仅要能间接通过公路可达就可以).

畅通project(杭电1232)

畅通project Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 31588    Accepted Submission(s): 16638 Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表.表中列出了每条道路直接连通的城镇.省政府"畅通project"的目标是使全省不论什么两个城镇间都

HDU 1874 畅通project续 (最短路径)

畅通project续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 26735    Accepted Submission(s): 9625 Problem Description 某省自从实行了非常多年的畅通project计划后,最终修建了非常多路.只是路多了也不好,每次要从一个城镇到还有一个城镇时.都有很多种道路方案能够选择,而