专题四1006
来源:互联网 发布:淘宝商城保健品 编辑:程序博客网 时间:2024/05/21 10:25
题意:修路问题,给定一个地图,求最小花费。
解题思路: 按照Kruskal算法构造最小生成树,先选择一个节点,然后不断向里面加入邻近的价格最便宜的点,最后输出总金钱数
源码:
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int inf = ( 1 << 20 ) ;
int p[27];
struct prog {
int u ,v, w;
}map[80];
bool cmp ( prog a , prog b)
{
return a.w<b.w;
}
int find(int x)
{
return x==p[x]?x:p[x]=find(p[x]);
}
int main()
{
int n;
while ( cin >> n , n )
{
int i , j ;
for ( i = 0 ; i < 27 ; i ++ )
p[i] = i ;
int k = 0 ;
for ( i = 0 ; i < n - 1 ; i ++ )
{
char str[3];
int m;
cin >> str >> m ;
for ( j = 0 ; j < m ; j ++ ,k ++ )
{
char str2[3];
int t;
cin >> str2 >> t ;
map[k].u=(str[0]-'A');
map[k].v=(str2[0]-'A');
map[k].w=t;
}
}
sort ( map , map + k , cmp );
int ans=0;
for ( i = 0 ; i < k ; i ++ )
{
int x = find(map[i].u);
int y = find(map[i].v);
if( x!=y)
{
ans+=map[i].w;
p[x]=y;
}
}
cout<<ans<<endl;
}
return 0;
}
Problem F
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 22 Accepted Submission(s) : 17
9A 2 B 12 I 25B 3 C 10 H 40 I 8C 2 D 18 G 55D 1 E 44E 2 F 60 G 38F 0G 1 H 35H 1 I 353A 2 B 10 C 40B 1 C 200
21630
- 专题四1006
- 专题四1006
- 1006-F专题四
- 专题四 · 1006
- 专题四——1006
- 杭电专题四1006
- 专题四-1006-典型Kruskal算法应用
- 2016sdau课程练习专题四 1006
- 3G专题四
- LDAP专题(四)
- 专题四1003
- 专题四1003
- 专题四 · 1001
- 专题四 Problem A
- 专题四 Problem B
- 专题四 Problem C
- 专题四 Problem D
- 专题四 Problem E
- ios 多个参数的block
- iOS-你真的会用UIMenuController吗?(详细)
- Android:View的测量/onMeasure()方法解析
- 用iPhone 4S带着Ubuntu Linux上网
- 使用gitbook写文档
- 专题四1006
- 安卓自定义导航栏滚动渐变
- Bash脚本执行mysql语句
- Unity3D 串口连接
- CRC8 校验函数
- Scala入门学习笔记三--数组使用
- 从一次pga暴涨事故引发对pga的进一步认知
- maven install时报错Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile
- Push推送