hdu-1863-畅通工程(kruskal算法模板)
/*
Name:hdu-1863-畅通工程
Copyright:
Author:
Date: 2018/4/18 10:19:03
Description:
kruskal算法
*/
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;
const int MAXN = ;
struct edge{
int x, y, w;
edge(int x=,int y=, int w=):x(x),y(y),w(w){
};
} e[];
int N ,M, cnt;
int fa[MAXN];
int getfather(int x) {//查找
if (x == fa[x]) return x;
else return fa[x] = getfather(fa[x]);
}
bool cmp(edge a, edge b) {//从小到大排序
return a.w < b.w;
}
int kruskal() {
sort(e+, e+M+, cmp);
cnt = M;//边数
int ans = ;
for (int i=; i<=N; ++i) fa[i] = i;
for (int i=; i<=M; ++i) {
int t1 = getfather(e[i].x);
int t2 = getfather(e[i].y);
if (t1 != t2) {
fa[t1] = t2;
ans += e[i].w;
cnt--;//加入结点
if (cnt == ) break;////// 加入n-1条边说明已经生成最小生成树
}
}
return ans;
}
int main()
{
// freopen("in.txt", "r", stdin);
while (cin>>N>>M, N) {
memset(e, , sizeof(e));
memset(fa, , sizeof(fa));
for (int i=; i<=N; i++) {
scanf("%d %d %d", &e[i].x, &e[i].y, &e[i].w);
}
int ans = kruskal();
if (cnt != ) cout<<"?"<<endl;
else cout<<ans<<endl;
}
return ;
}
hdu-1863-畅通工程(kruskal算法模板)的更多相关文章
- HDU 1863 畅通工程 -Kruskal模版
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- hdu 1863 畅通工程(Kruskal+并查集)
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- HDU 1863 畅通工程(Kruskal)
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- hdu 1863 畅通工程 (并查集+最小生成树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1863 畅通工程 Time Limit: 1000/1000 MS (Java/Others) M ...
- HDU 1863 畅通工程(Prim,Kruskal,邻接表模板)
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- HDU 1863 畅通工程(Prim算法求解MST)
题目: 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本.现 ...
- HDU 1863 畅通工程 克鲁斯卡尔算法
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- hdu 1863 畅通工程 (并查集 、 kruskal)
畅通工程Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- <hdu - 1863> 畅通工程 并查集和最小生成树问题
本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1863 Problem Description: 省政府“畅通工程”的目标是使全省任何两个村庄间都可以 ...
- hdu 1863 - 畅通工程(MST)
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
随机推荐
- 百度地图sn计算方法说明
官方说明[有状态码的数值意义查询 和 python 转换源码]: http://lbsyun.baidu.com/index.php?title=lbscloud/api/appendix
- Charles安装与使用
Charles是在 Mac 下常用的网络封包截取工具,在做 移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析. Charles 通过将自己设置成系统的网络访问代理服务器,使 ...
- 高阶函数,map,filter,sorted
Map:对列表中的每个元素进行操作 >>> def f(x): ... return x * x ... >>> map(f, [1, 2, 3, 4, 5, ...
- Python基础(8)_迭代器、生成器、列表解析
一.迭代器 1.什么是迭代 1 重复 2 下次重复一定是基于上一次的结果而来 l=[,,,] count= while count < len(l): print(l[count]) count ...
- Kattis - abc 【水】
题意 给出三个数,然后给出一个顺序,有ABC三个字母构成, A是最大的数字 B是中间的数字 C是最小的数字 根据 ABC的顺序 给出 数字的顺序 思路 先排序一下,然后用 MAP 双向标记一下 AC代 ...
- 去重除了indexOf的其他方法(使用对象Key的方法)及统计重复次数
1.去重: 法1:使用数组IndexOf去重 法2:使用对象Key: <script> var arr1 = [1,13,24,11,11,14,1,2]; let unique = fu ...
- java WordUtils word文档工具类
package com.sicdt.library.core.utils; import java.io.ByteArrayOutputStream; import java.io.IOExcepti ...
- js判断一个数组是否包含一个指定的值
今天看了一下 有好几种方法 总结一下 1:array.indexOf 此方法判断数组中是否存在某个值,如果存在返回数组元素的下标,否则返回-1 let arr = ['something', ...
- Linux权限管理 文件特殊权限
概述 除了我们前面介绍的rwx权限外,Linux中还有另外三种特殊权限:SUID,SGID,SBIT 权限 执行条件 执行示例 SUID s出现在文件所有者的x权限上. 1. SUID只能用 ...
- 【leetcode刷题笔记】Text Justification
Given an array of words and a length L, format the text such that each line has exactly L characters ...