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 ...
随机推荐
- 完整实例(C# Socket)
问题描述: 现在创建一个C# Socket实例,客户端断开服务器能立刻输出断开连接客户端信息 服务器端断开,客户端能立刻察觉服务器状态 问题解决: 服务器端代码: 客户端代码: 以上 ...
- c#中获取服务器IP,客户端IP以及其它
客户端ip:Request.ServerVariables.Get("Remote_Addr").ToString();客户端主机名:Request.ServerVariables ...
- 【HTTP】Fiddler(一) - Fiddler简介
1.为什么是Fiddler? 抓包工具有很多,小到最常用的web调试工具firebug,达到通用的强大的抓包工具wireshark.为什么使用fiddler?原因如下: a.Firebug虽然可以抓包 ...
- 腾讯QQ企业邮箱在ruby on rails 框架中的mailer配置
在编写ruby on rails程序时,我们可能会需要用到发送邮件的程序,如果使用gmail进行smtp发送一般问题不大,但很多企业使用的是腾讯QQ企业邮箱.使用该邮箱进行链接时出现各种错误,goog ...
- HTML中动态图片切换JQuery实现
相信很多同学都注意到了,各大新闻或者娱乐网站都含有动态图片切换,那个漂亮的感觉让刚刚学习html的人,都非常好奇和心动.那下面就让我们看一下到底如何实现动态图片切换呢?看一下百度贴吧的效果图吧~ // ...
- 中国移动MM Android/OPhone付费SDK--MMBillingSDK,集成问题总结
原地址:http://www.j2megame.com/html/xwzx/ty/2916.html 中国移动MM Android/OPhone付费SDK--MMBillingSDK,集成问题总结 近 ...
- POJ 3468 A Simple Problem with Integers(线段树区间更新,模板题,求区间和)
#include <iostream> #include <stdio.h> #include <string.h> #define lson rt<< ...
- Thread的第三天学习
线程互斥 public void method1() { synchronized(this) { ... } } 等同于 public synchronized void method1() { ...
- utf-8中的汉字占用多少字节
转载:http://blog.csdn.net/chummyhe89/article/details/7777613 占2个字节的:〇 占3个字节的:基本等同于GBK,含21000多个汉字 占4个字节 ...
- java io知识点汇总FIle类
1.路径分隔符问题: 因为java有跨平台行,而在windows和linux中的目录分隔符是不同的.windows是"\" 而linux是"/" 所以必须想办 ...