Hdu 2122
2015-08-20 19:04
232 查看
Ice_cream’s world III
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1350 Accepted Submission(s): 449
[align=left]Problem Description[/align]
ice_cream’s world becomes stronger and stronger; every road is built as undirected. The queen enjoys traveling around her world; the queen’s requirement is like II problem, beautifies the roads, by which there are some ways from every
city to the capital. The project’s cost should be as less as better.
[align=left]Input[/align]
Every case have two integers N and M (N<=1000, M<=10000) meaning N cities and M roads, the cities numbered 0…N-1, following N lines, each line contain three integers S, T and C, meaning S connected with T have a road will cost C.
[align=left]Output[/align]
If Wiskey can’t satisfy the queen’s requirement, you must be output “impossible”, otherwise, print the minimum cost in this project. After every case print one blank.
[align=left]Sample Input[/align]
2 1
0 1 10
4 0
[align=left]Sample Output[/align]
10
impossible
首先要明确使用的是最小生成树的解决方案,其次题目的要求存在无解的情况这里要做一个判断。代码不难,用的是模版
#include<iostream>
#include<cstdio>
#include<algorithm>
#define inf 9999999
using namespace std;
int pot[1001];
int num,ans;
int find(int x)
{
if(pot[x]==x)return x;
pot[x]=find(pot[x]);
return pot[x];
}//找到其所在集合的根结点(代表城市)
struct node{
int a;
int b;
int c;
}road[10001];//保存道路信息
int cmp(const node a,const node b) {
return a.c<b.c;
}
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF){
for(int i=0;i<n;i++)
pot[i]=i;
for(int i=0;i<m;i++)
scanf("%d%d%d",&road[i].a,&road[i].b,&road[i].c);
sort(road,road+m,cmp);
num=0;//记录到达的数目
ans=0;//记录路程(必然最短)
for(int i=0;i<m;i++)
{
int x,y;
x=find(road[i].a);
y=find(road[i].b);
if(x!=y)
{
num++;
ans+=road[i].c;
pot[x]=y;
}
}
if(num<n-1)//判断合法
printf("impossible\n");
else
printf("%d\n",ans);
printf("\n");
}
return 0;
}
相关文章推荐
- HDOJ 2141 Can you find it? (合并&&二分)
- mongoDB 3.0 安全权限访问控制
- HDU 5412 CRB and Queries(区间第K大 树套树 按值建树)
- python 模块
- linux无锁编程
- Linux下如何查看系统启动时间和运行时间
- Lowest Common Ancestor of a Binary Tree
- android开发环境搭建日记和嵌入式Android开发环境初探
- [iOS]C语言知识点系列视频
- Alex / OverFeat / VGG 中的卷积参数
- 算法初探
- poj 3159 Candies
- 一提到父子类对象
- 项目进度
- HDU 1542 Atlantis(线段树扫描线,面积并)
- 汤姆猫实现代码
- jQuery Ajax 实例
- 数据结构中排序方法基本概念 及 分类
- 分享一些不错的学习IOS资源网站
- HDU 4348 To the moon 可持久化线段树,有时间戳的区间更新,区间求和