HDU-1232--畅通工程(最小生成树)
2024-10-12 13:18:16
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 2
1 3
4 3
3 3
1 2
1 3
2 3
5 2
1 2
3 5
999 0
0
Sample Output
1
0
2
998
Hint
Hint Huge input, scanf is recommended.
Source
浙大计算机研究生复试上机考试-2005年
Recommend
JGShining
又是一道最小生成树的裸题
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<map>
#include<iomanip>
#define INF 0x7ffffff
#define MAXN 1100
using namespace std;
const double eps=1e-;
const double PI=acos(-);
const int MAXN2=;//
int G[MAXN][MAXN];
int s[MAXN];
int n,m;
struct edge
{
int x;
int y;
}e[MAXN2];
int f(int x)
{
if(x==s[x])
return x;
s[x]=f(s[x]);
return s[x];
}
int merg(int a,int b)
{
int x=f(a),y=f(b);
if(x!=y){
s[x]=y;
return ;
}
return ;
}
void init()
{
for(int i=;i<=n;i++){
s[i]=i;
}
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("data.in", "r", stdin);
#endif
std::ios::sync_with_stdio(false);
std::cin.tie();
//并查集
int a,b;
int res;
while(cin>>n){
init();
if(n==)
continue;
cin>>m;
struct edge tmp;
for(int i=;i<m;i++){
cin>>a>>b;
merg(a,b);
}
res=;
for(int i=;i<=n;i++){
for(int j=i+;j<=n;j++){
if(!merg(i,j)){
res++;
}
}
}
cout<<res<<endl;
}
}
最新文章
- ubuntu如何傻瓜式安装eric6
- iOS - Mac OS X 终端设置
- API接口验证
- SuperGridControl 使用小技巧
- Mongodb学习教程汇总
- ld: symbol dyld_stub_binding_helper not found, normally in crt1.o/dylib1.o/bundle1.o for architecture i386
- C++ 进阶必备
- 每天进步一点点——Linux系统时间来处理
- KEILC51可重入函数及模拟栈浅析
- sql语句查询列的说明
- Https系列之四:https的SSL证书在Android端基于okhttp,Retrofit的使用
- 华为云照片的爬虫程序更新(python3.6)
- Java进阶篇(二)——抽象类、内部类
- idea的一般使用和初始配置
- vue.js学习第一天,了解vue.js
- EXTJS4扩展实例:如何使用filter查询treepanel
- java调用.net的webservice
- js es6 map 与 原生对象区别
- TCP三次握手,什么情况下client会回复reset
- SP34096 【DIVCNTK - Counting Divisors (general)】