还是畅通工程(最小生成树 并查集 Prim Kruskal)
Description
某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。
Input
测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( < 100 );随后的N(N-1)/2行对应村庄间的距离,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间的距离。为简单起见,村庄从1到N编号。
当N为0时,输入结束,该用例不被处理。
Output
对每个测试用例,在1行里输出最小的公路总长度。
Sample Input
3
1 2 1
1 3 2
2 3 4
4
1 2 1
1 3 4
1 4 1
2 3 3
2 4 2
3 4 5
0
Sample Output
3
5
#include <iostream>
#include <algorithm>
using namespace std;
struct Node
{
int a;
int b;
int dis;
};
int father[101];
Node node[5100];
bool cmp(Node A, Node B)
{
return A.dis < B.dis;
}
int Find(int t)
{
int temp = t;
while (temp != father[temp])
temp = father[temp];
return father[t] = temp;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n, m;
while (cin >> n && n != 0)
{
for (int i = 1; i <= n; ++i)
father[i] = i;
m = n * (n - 1) / 2;
for (int i = 0; i < m; ++i)
cin >> node[i].a >> node[i].b >> node[i].dis;
sort(node, node + m, cmp);
int ans = 0, cnt = 0;
for (int i = 0; i < m; ++i)
{
int a = Find(node[i].a);
int b = Find(node[i].b);
if (a != b)
{
ans += node[i].dis;
cnt++;
father[b] = a;
if (cnt == n - 1)
break;
}
}
cout << ans << endl;
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int arc[100][100];
int V[100];
int ans, n;
int ok()
{
for (int i = 0; i < n; i++)
if (V[i] == 0)
return 1;
return 0;
}
void solve()
{
int shortPath[100];
int t = 0, i, j, min;
memset(shortPath, 0x7f, sizeof(shortPath));
memset(V, 0, sizeof(V));
ans = 0;
while (ok())
{
V[t] = 1;
for (i = 0; i < n; i++)
if (arc[t][i] > 0 && V[i] == 0 && arc[t][i] < shortPath[i])
shortPath[i] = arc[t][i];
min = 0;
for (i = 1; i < n; i++)
if (shortPath[min] > shortPath[i] && shortPath[i] != 0)
min = i;
if (min != 0)
{
ans += shortPath[min];
t = min;
shortPath[min] = 0;
}
}
}
int main()
{
int m, i;
int v1, v2, w;
while (~scanf("%d", &n) && n)
{
memset(arc, 0, sizeof(arc));
m = n * (n - 1) / 2;
while(m--)
{
scanf("%d%d%d", &v1, &v2, &w);
arc[v1 - 1][v2 - 1] = w;
arc[v2 - 1][v1 - 1] = w;
}
solve();
printf("%d\n", ans);
}
return 0;
}
还是畅通工程(最小生成树 并查集 Prim Kruskal)的更多相关文章
- hdu1875 畅通工程再续 最小生成树并查集解决---kruskal
http://acm.hdu.edu.cn/showproblem.php?pid=1875 New~ 欢迎“热爱编程”的高考少年——报考杭州电子科技大学计算机学院关于2015年杭电ACM暑期集训队的 ...
- hdu 1879 继续畅通工程 (并查集+最小生成树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1879 继续畅通工程 Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 1232 畅通工程 (并查集)
某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可). ...
- HDU 1232:畅通工程(并查集模板)
畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- hdu 1232 畅通工程(并查集算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1232 畅通工程 Time Limit: 4000/2000 MS (Java/Others) M ...
- hdu畅通工程(并查集)
Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道 ...
- HDU1232 畅通工程---(经典并查集应用)
http://acm.hdu.edu.cn/showproblem.php?pid=1232 畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory ...
- 题解报告:hdu 1232 畅通工程(并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1232 Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了 ...
- HDU 1863 畅通工程 (并查集)
原题链接:畅通工程 题目分析:典型的并查集模版题,这里就不详细叙述了.对算法本身不太了解的可以参考这篇文章:并查集算法详解 代码如下: #include <iostream> #inclu ...
随机推荐
- navicate premium黄色版本破解下载
百度网盘下载 提取码: tsua 按照电脑安装32位或者64位 安装完成后点击最后一个进行破解汉化
- linux创建www用户组和用户
linux创建www用户组和用户 wdcp中的nginx服务启动需要依赖www用户,因此若没有此用户就可能会启动失败.创建这个用户的方法: [root@bogon local]# id www [ro ...
- Nexus 安装教程
Nexus 安装教程 一. CentOS设置 1. 更换阿里源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/ ...
- ASP.NET 获取客户端IP地址
我们用Request.ServerVariables( "REMOTE_ADDR ") 来取得客户端的IP地址, 但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的I ...
- 第二章 rsync服务原理
一.备份 1.什么是备份? 1)把重要的数据或者文件再次复制一份并保存下来 2.为什么要做备份? 1)数据的重要性 2)为了出现故障,恢复数据 3.能不能不备份? 1)重要的数据一定要备份 2)不重要 ...
- MSF权限维持
MSF权限维持 环境搭建 目标机:win7 ip:192.168.224.133 攻击机:kali linux ip:192.168.224.129 首先使用web_delivery模块的regsvr ...
- C# 将dataset数据导出到excel中
//添加引用 NPOI.dll //添加 using NPOI.HSSF.UserModel; /// <summary> /// 导出数据到Excel /// </summary& ...
- Django采坑日志(django2.0)
使用Mariadb时出现的问题 "Unknown system variable 'transaction_isolation'" 解决办法:修改django/db/backend ...
- Codeforces Round #427 (Div. 2) E. The penguin's game (交互题,二进制分组)
E. The penguin's game time limit per test: 1 second memory limit per test: 256 megabytes input: stan ...
- nacos 作为配置中心使用心得--配置使用
1.页面配置 撇开原理不谈,先来介绍下nacos的基本使用,如下图nacos配置是以data id为单位进行使用的,基本上一个服务的一个配置文件就对应一个data id,支持的格式有xml,yaml, ...