HDU 2122 Ice_cream’s world III
2015-08-18 10:10
375 查看
B - Ice_cream’s world III
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
SubmitStatus
Description
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.
Input
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.
Output
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.
Sample Input
Sample Output
最小生成树基础题目。
Prim算法。
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
SubmitStatus
Description
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.
Input
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.
Output
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.
Sample Input
2 1 0 1 10 4 0
Sample Output
10 impossible
最小生成树基础题目。
Prim算法。
#include <stdio.h> #include <string.h> #include <algorithm> #define INF 0x3f3f3f3f #define N 1005 using namespace std; int graph ; int dis ,vis ; int main() { int n,m; while(scanf("%d%d",&n,&m)>0) { memset(vis,0,sizeof(vis)); for(int i = 0; i < n; i++) { graph[i][i] = 0; for(int j = 0; j < i; j++) graph[i][j] = graph[j][i] = INF; } int s,t,c; while(m--) { scanf("%d%d%d",&s,&t,&c); graph[s][t]=graph[t][s]=min(graph[s][t],c); } vis[0]=1; for(int i=0;i<n;i++) dis[i]=graph[0][i]; int minn,v,sum=0; for(int j=1;j<n;j++) { minn=INF,v=-1; v=-1; for(int i=0;i<n;i++) if(!vis[i]) minn=minn>dis[i]?dis[v=i]:minn; if(v==-1) break; vis[v]=1; sum+=minn; for(int i=0;i<n;i++) if(!vis[i]) dis[i] = min(graph[v][i],dis[i]); } if(v==-1) printf("impossible\n"); else printf("%d\n",sum); printf("\n"); } return 0; }
相关文章推荐
- iOS操作属性列表plist(增删改查)
- 使用virtualenv, uwsgi, nginx来布署flask
- 三种ppt与pdf文档格式转换方法
- 一个表缺失索引发的CPU资源瓶颈案例
- cocos2d-x 3.X用progressTimer制作血槽
- 理解Bitcode:一种中间代码
- 2015 Objective-C 三大新特性
- 十道海量数据处理面试题与十个方法大总结
- 中国互联网公司最新最全阵亡名单
- 一个关于中国省市区的字典,数组嵌套使用
- Triangle LOVE 杭电HDU4324 【拓扑排序】
- 发布了Android的App,我要开源几个组件!
- POJ 2718 Smallest Difference
- jenkins 系统设置
- python抓包
- 【思路,dp,BigInteger】ZOJ - 2598 Yet Another Digit
- 投资和工商变更的问题
- PackageManagerService的常用方法
- Android中的Activity和Service是否属于同一个进程
- 直接插入排序(C++实现)