图结构练习——最小生成树
2015-07-28 21:28
218 查看
图结构练习——最小生成树
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
有n个城市,其中有些城市之间可以修建公路,修建不同的公路费用是不同的。现在我们想知道,最少花多少钱修公路可以将所有的城市连在一起,使在任意一城市出发,可以到达其他任意的城市。输入
输入包含多组数据,格式如下。第一行包括两个整数n m,代表城市个数和可以修建的公路个数。(n <= 100, m <=1000)
剩下m行每行3个正整数a b c,代表城市a 和城市b之间可以修建一条公路,代价为c。
输出
每组输出占一行,仅输出最小花费。示例输入
3 2 1 2 1 1 3 1 1 0
示例输出
2 0#include<bits/stdc++.h> using namespace std; int a[10000]; struct node { int a,b,c; }t[10000]; bool cmp(node a,node b) { return a.c<b.c; } int find(int x) { int r=x; while (r!=a[r]) r=a[r]; return r; } int main() { int n,m,s,i; while (cin>>n>>m) { for (i=0;i<=n;i++) a[i]=i; for (i=0;i<m;i++) { cin>>t[i].a>>t[i].b>>t[i].c; } sort(t,t+m,cmp); s=0; for (i=0;i<m;i++) { int x=find(t[i].a); int y=find(t[i].b); if (x!=y) { a[x]=y; s+=t[i].c; } } cout<<s<<endl; } return 0; }
相关文章推荐
- 进制转换课后练习
- IOS switch-case知多少
- hdu 1712 ACboy needs your help (dp 分组背包)
- 自考路之策马扬鞭再奋蹄
- 简单实现标签切换效果
- 服务器升级linux内核
- 简说创业公司的技术选型,从BearyChat的开发说起
- Bootstrap简介
- 第一个 bat 文件
- ZOJ 3885 The Exchange of Items
- Text Justification
- 斐波那契数列F(n)【n超大时的(矩阵加速运算) 模板】
- Android如何实现侧拉栏
- hdu 5323 Solve this interesting problem(15多校第三场1008)(暴力)
- Android手势滑动识别器应用
- 循环次数
- 暑假集训第三周 STL R - What Are You Talking About
- C#委托
- 程序开发的23种模式
- CALayer 和 CAGradientLayer简单使用