(step6.1.5)hdu 1233(还是畅通工程——最小生成树)
来源:互联网 发布:程序员表白神器 编辑:程序博客网 时间:2024/05/31 13:15
题目大意:输入一个整数n,表示有n个村庄,在接下来的n*(n-1)/2中,每行有3个整数beigin、end、weight,分别表示路的起始村庄,结束村庄和村庄之间的距离。
求索要修的路的最短距离
解题思路:最小生成树(克鲁斯卡尔算法实现)。。。
PS:更详细的说明在上一篇博客中有
代码如下:
/* * 1233_1.cpp * * Created on: 2013年8月26日 * Author: Administrator */#include <iostream>using namespace std;struct edge{int begin;int end;int weight;};const int maxn = 6000;int father[maxn];edge e[maxn*maxn];int find(int x){if( x == father[x]){return x;}father[x] = find(father[x]);return father[x];}int kruscal(int count){int i;int sum = 0;for( i = 1 ; i < maxn ; ++i){father[i] = i;}for( i = 0 ; i < count ; ++i ){int fx = find(e[i].begin);int fy = find(e[i].end);if(fx != fy){father[fx] = fy;sum += e[i].weight;}}return sum;}bool compare(const edge& a , const edge& b){return a.weight < b.weight;}int main(){int n;while(scanf("%d",&n)!=EOF,n){int i;int m = n*(n - 1)/2;memset(father,0,sizeof(father));//尽量加上,否则可能会出现一些问题for(i = 0; i < m ; ++i){scanf("%d%d%d",&e[i].begin,&e[i].end,&e[i].weight);}sort(e, e + m , compare);int sum = kruscal(m);printf("%d\n",sum);}}
- (step6.1.5)hdu 1233(还是畅通工程——最小生成树)
- (step6.1.1)hdu 1879(继续畅通工程——最小生成树、kruscal)
- (step6.1.2)hdu 1863(畅通工程——最小生成树)
- (step6.1.3)hdu 1875(畅通工程再续——最小生成树)
- 最小生成树—还是畅通工程
- hdu 1233 还是畅通工程(Prim最小生成树)
- hdu 1233 还是畅通工程(最小生成树Kruskal)
- hdu 1233 还是畅通工程(最小生成树)
- hdu 1233 最小生成树 "还是畅通工程"
- hdu 1233 还是畅通工程--最小生成树prim
- HDU 1233 还是畅通工程 最小生成树
- hdu 1233 还是畅通工程【最小生成树入门】
- HDU 1233 还是畅通工程---prim求最小生成树
- hdu 1233 还是畅通工程(最小生成树)
- HDU-1233 还是畅通工程 最小生成树Prime
- HDU 1233 还是畅通工程(最小生成树)
- [ACM] hdu 1233 还是畅通工程(最小生成树)
- HDU 1233 还是畅通工程(最小生成树)
- 学习笔记----素数筛
- nginx backdoor
- 修改extjs源码真正解决:ExtJs4.0 GridPanel 数据内容不能选中复制。
- 在java代码中进行px与dip(dp)、px与sp单位值的转换
- 对FMDB的进一步封装--不会sql也能用sqlite
- (step6.1.5)hdu 1233(还是畅通工程——最小生成树)
- Processes 和 Threads 学习笔记
- jquery.cookie.js操作cookie-
- 无缝漫游 Seamless Roaming
- 越接触本质,越不会迷茫-《Microsoft SQL Server企业级平台管理实践》
- FOJ 1591 —— Coral的烦恼
- hibernate的save和saveOrUpdate方法
- 包加载失败的解决办法
- 正确初始化二维数组