prim(与边无关,适合稠密的图,o(n^2))---还是畅通工程
题目1017:还是畅通工程
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:1653
解决:838
- 题目描述:
-
某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。
- 输入:
-
测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( < 100 );随后的N(N-1)/2行对应村庄间的距离,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间的距离。为简单起见,村庄从1到N编号。
当N为0时,输入结束,该用例不被处理。
- 输出:
-
对每个测试用例,在1行里输出最小的公路总长度。
- 样例输入:
-
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
- 样例输出:
-
3
5
- 来源:
- 2006年浙江大学计算机及软件工程研究生机试真题
-
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#define maxs 0x3f3f3f3f
using namespace std;
int mat[105][105];
int main()
{
int ans,mins,i,j,n,a,b,v,p,low[105];
bool visited[105];
while(scanf("%d",&n)!=EOF&&n)
{
ans=0,p=0;
for(i=0; i<n; i++)
for(j=0; j<n; j++)
mat[i][j]=maxs;
memset(visited,false,sizeof(visited));
for(i=0; i<(n*(n-1)/2); i++)
{
scanf("%d%d%d",&a,&b,&v);
mat[--a][--b]=v;
mat[b][a]=v;
}
visited[0]=true;
low[0]=maxs;
for(i=1; i<n; i++)
low[i]=mat[0][i];
for(i=0; i<n-1; i++)
{
mins=maxs;
for(j=0; j<n; j++)
if(!visited[j]&&low[j]<mins)
{
mins=low[j];
p=j;
}
ans+=mins;
visited[p]=true;
for(j=0; j<n; j++)
if(!visited[j]&&low[j]>mat[p][j])
low[j]=mat[p][j];
}
printf("%d\n",ans); }
return 0;
}
prim(与边无关,适合稠密的图,o(n^2))---还是畅通工程的更多相关文章
- hdu 1233:还是畅通工程(数据结构,图,最小生成树,普里姆(Prim)算法)
还是畅通工程 Time Limit : 4000/2000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submis ...
- HDU-1233 还是畅通工程 (prim 算法求最小生成树)
prim 算法求最小生成树 还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- hdu 1233 还是畅通工程 最小生成树(prim算法 + kruskal算法)
还是畅通工程 Time Limit: 4000/2 ...
- 最小生成树算法 prim kruskal两种算法实现 HDU-1863 畅通工程
最小生成树 通俗解释:一个连通图,可将这个连通图删减任意条边,仍然保持连通图的状态并且所有边权值加起来的总和使其达到最小.这就是最小生成树 可以参考下图,便于理解 原来的图: 最小生成树(蓝色线): ...
- 还是畅通工程(prim和kruskal)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1233 还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) ...
- MST(最小生成树)——Prim算法——HDU 1879-继续畅通工程
Prim算法很好理解,特别是学完了迪杰斯特拉算法之后,更加能理解Prim的算法思想 和迪杰斯特拉算法差不多,由于最后要形成连通图,故任意指定一个点,作为初始点,遍历所有点,以当前最小权值的点(和迪杰斯 ...
- HDU 1875 畅通工程再续 (prim最小生成树)
B - 畅通工程再续 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit S ...
- hdu1863 畅通工程(最小生成树之prim)
Problem Description 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出了有可 ...
- HDU 1879 继续畅通工程 (Prim(普里姆算法)+Kruskal(克鲁斯卡尔))
继续畅通工程 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
随机推荐
- 测试中的几个case
一.页面上对引起 大量数据提交的 按钮/链接 点击一次后, disable 需求: 对于重要的表单.数量庞大/响应慢的系统,在做提交时, 又有页面还在loading状态, 此时连续做两次点击, 经常 ...
- 关于windows10调试应用注册失败
搜索了一些方法,都是win8系统的应用程序解决方案,修改应用程序的包名.也尝试修改了一些,但是失败,任然报错,以前在这个机器上面是能正常调试的,唯一的不同点是就是系统升级到10166了,于是去设置里面 ...
- Requirejs开篇
前言 随着页面的内容丰富,以及网站体验更好.性能优化等,原有的通过script标签引入JavaScript脚本的方式已经不能很好地解决,此时新的一种JavaScript加载方式产生了--延时加载.执行 ...
- NodeJS连接MongoDB数据库时报错
今天第一次尝试连接MongoDB数据库,具体步骤也很简单. 首先,通过NodeJS运行环境安装MongoDB包,进入要安装的目录,执行语句 npm install mongodb 安装成功后,通过如下 ...
- 快速开启Windows 的各种任务及 bat(ch)脚本
MSC It is the Microsoft Management Console Snap-in Control File, like services.msc, devmgmt.msc (Dev ...
- C++ DLL 获取 MSI Property
VS2010 创建 C++, Win32 DLL工程C-TEST. Stdafx.h中,在<windows.h>之后 添加引用. #include <msi.h> #incl ...
- OpenJudge 2813 画家问题 / Poj 1681 Painter's Problem
1.链接地址: http://bailian.openjudge.cn/practice/2813 http://poj.org/problem?id=1681 2.题目: 总时间限制: 1000ms ...
- OpenJudge 2738 浮点数加法
1.链接地址: http://bailian.openjudge.cn/practice/2738 2.题目: 总时间限制: 1000ms 内存限制: 65536kB 描述 求2个浮点数相加的和 题目 ...
- mysql 乱码问题处理
出现乱码的问题,主要就是因为数据在被处理的过程中,出现了编码和解码不对应造成的.因此解决编码问题的方法也就是在通过让编码和解码的过程能够对应起来就OK了,大学的而是,记得经常搞这个问题,今天又碰到了m ...
- centos 安装php ide (eclipse + php 插件)
1.检查更新并安装eclipse yum check-update yum install eclipse*此时的 eclipse 已经安装好了,默认是在/usr/lib/下的,可以通过cd /u ...