HDU 1233 还是畅通工程(最小生成树,prim)
题意:中文题目
思路:prim实现,因为有n*(n-1)/2条边,已经是饱和的边了,prim比较合适。
(1)将点1置为浏览过,点1可以到达其他每个点,所以用low[i]数组记录下目前到达i点的最小长度。
(2)在low数组中找出到达未浏览过的点且距离最近的,置为浏览过,记该店为pos。
(3)将pos点可达的所有点,来更新low数组,使得从已浏览过的点到达i点的距离最短为low[i]。
(4)返回到2继续执行,直到所有的点都浏览过。
在第2步时就可以顺便记录下最小路径长度了。
#include <bits/stdc++.h>
using namespace std;
const int N=;
int v[N][N]; //权
int vis[N];
int low[N]; //到每个点的最小权 int prim(int n)//普里姆算法
{
memset(vis,,sizeof(vis));
int pos=vis[]=; //从点1开始
for(int i=; i<=n; i++) if(v[][i]>) low[i]=v[][i]; //目前到每个点的最小权
int ans=;
for(int i=; i<n; i++) //搞定另外n-1个点
{
int big=LONG_MAX;
for(int j=; j<=n; j++) //找权最小的边,及对应的点
{
if(!vis[j] && low[j]<big )
{
pos=j;
big=low[j];
}
}
ans+=big;//统计路径长
vis[pos]=;
for( int j=; j<=n; j++ )//更新到每个点的权值
if(!vis[j]) low[j]=min(low[j],v[pos][j]);
}
return ans;
} int main()
{
freopen("input.txt", "r", stdin);
int n, a, b, t;
while(scanf("%d",&n),n>)
{
int up=n*(n-)/;//超稠密图
for(int i=; i<up; i++)
{
scanf("%d%d%d",&a,&b,&t);
v[a][b]=v[b][a]=t;
}
printf("%d\n",prim(n));
}
return ;
}
AC代码
HDU 1233 还是畅通工程(最小生成树,prim)的更多相关文章
- HDU.1233 还是畅通工程(Prim)
HDU.1233 还是畅通工程(Prim) 题意分析 首先给出n,代表村庄的个数 然后出n*(n-1)/2个信息,每个信息包括村庄的起点,终点,距离, 要求求出最小生成树的权值之和. 注意村庄的编号从 ...
- hdu 1233 还是畅通工程 最小生成树(prim算法 + kruskal算法)
还是畅通工程 Time Limit: 4000/2 ...
- HDU 1233.还是畅通工程-最小生成树(Prime)
还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- HDU 1233 还是畅通工程 (最小生成树)
还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- (step6.1.5)hdu 1233(还是畅通工程——最小生成树)
题目大意:输入一个整数n,表示有n个村庄,在接下来的n*(n-1)/2中,每行有3个整数beigin.end.weight,分别表示路的起始村庄,结束村庄和村庄之间的距离. 求索要修的路的最短距离 解 ...
- hdu 1233 还是畅通工程 (最小生成树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1233 还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) ...
- HDU 1233 还是畅通工程(Kruskal算法)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1233 还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) ...
- hdu 1233:还是畅通工程(数据结构,图,最小生成树,普里姆(Prim)算法)
还是畅通工程 Time Limit : 4000/2000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submis ...
- HDU 1233 还是畅通工程(最小生成树)
传送门 还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
随机推荐
- 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
// test20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...
- 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
// test14.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...
- [设计模式] 3 创建者模式 builder
转载http://blog.csdn.net/wuzhekai1985/article/details/6667467 建造者模式的定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不 ...
- 分享: 利用Readability解决网页正文提取问题
原文:http://www.cnblogs.com/iamzyf/p/3529740.html 做数据抓取和分析的各位亲们, 有没有遇到下面的难题呢? - 如何从各式各样的网页中提取正文!? 虽然可以 ...
- POJ 1258 Agri-Net(最小生成树,模板题)
用的是prim算法. 我用vector数组,每次求最小的dis时,不需要遍历所有的点,只需要遍历之前加入到vector数组中的点(即dis[v]!=INF的点).但其实时间也差不多,和遍历所有的点的方 ...
- hdu 4579 Random Walk 概率DP
思路:由于m非常小,只有5.所以用dp[i]表示从位置i出发到达n的期望步数. 那么dp[n] = 0 dp[i] = sigma(dp[i + j] * p (i , i + j)) + 1 . ...
- Java 获取amr音频格式的音频长度
import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; public class GetAm ...
- Eclipse 编译错误 Access restriction:The type *** is not accessible due to restriction on... 解决方案
报错: Access restriction:The type JPEGCodec is not accessible due to restriction on required library C ...
- Highcharts中初始化最大值与最小值的柱状图
<!doctype html> <html lang="en"> <head> <script type="text/javas ...
- 用React.addons.TestUtils、Jasmine进行单元测试
一.用到的工具 1.React.addons.TestUtils 2.Jasmine 3.Browserify(处理jsx文件的require依赖关系) 4.Reactify(能和browserify ...