hdu1863 畅通工程---MST&连通
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1863
题目大意:
中文题,求MST权值,如果不连通,输出?
解题思路:
这道题帮我找出了之前模板中的一点小问题。
原来prim模板是迭代n次,实际是只需要迭代n-1次就求出了MST,由于有一个条件判断,所以迭代n次也无所谓。这道题在prim模板上加上判断连通的操作,如果某一次找不到为加入MST的最小边,说明图不连通。所以此处只能迭代n-1次,多迭代的话,会造成错误判断。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = + ;
const int INF = 0x3f3f3f3f;
int Map[maxn][maxn];
int lowcost[maxn], mst[maxn];
int n, m;
ll prim(int u)
{
ll ans = ;
for(int i = ; i <= n; i++)
{
lowcost[i] = Map[u][i];
mst[i] = u;
}
mst[u] = -;
for(int i = ; i < n; i++)
{
int minn = INF;
int v = -;
//寻找lowcost数组里面的未加入mst的最小值
for(int j = ; j <= n; j++)
{
if(mst[j] != - && lowcost[j] < minn)
{
v = j;
minn = lowcost[j];
}
}
if(v != -)
{
mst[v] = -;
ans += lowcost[v];
for(int j = ; j <= n; j++)
{
if(mst[j] != - && lowcost[j] > Map[v][j])
{
lowcost[j] = Map[v][j];
mst[j] = v;
}
}
}
else return ;//没有找到,说明不连通
}
return ans;
}
int main()
{
while(scanf("%d%d", &m, &n) != EOF && m)
{
int u, v, w;
memset(Map, INF, sizeof(Map));
memset(lowcost, , sizeof(lowcost));
while(m--)
{
scanf("%d%d%d", &u, &v, &w);
Map[u][v] = Map[v][u] = w;
}
ll ans = prim();
if(ans)cout<<ans<<endl;
else cout<<"?"<<endl;
}
return ;
}
hdu1863 畅通工程---MST&连通的更多相关文章
- hdu 1863 - 畅通工程(MST)
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- HDU1863 畅通工程---(最小生成树)
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- 最小生成树算法 prim kruskal两种算法实现 HDU-1863 畅通工程
最小生成树 通俗解释:一个连通图,可将这个连通图删减任意条边,仍然保持连通图的状态并且所有边权值加起来的总和使其达到最小.这就是最小生成树 可以参考下图,便于理解 原来的图: 最小生成树(蓝色线): ...
- hdu 1233 - 还是畅通工程(MST)
还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- 还是畅通工程(MST)
还是畅通工程 Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Statu ...
- hdu1863 畅通工程(最小生成树之prim)
Problem Description 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出了有可 ...
- Kruskal算法-HDU1863畅通工程
链接 [http://acm.hdu.edu.cn/showproblem.php?pid=1863] 题意 Problem Description 省政府"畅通工程"的目标是使全 ...
- HDU1863 畅通工程 2017-04-12 19:25 59人阅读 评论(0) 收藏
畅通工程 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissi ...
- hdu1863畅通工程
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
随机推荐
- lyd的旅行
lyd的旅行 众所周知,lyd是一个人赢.他有很多很多的妹子.某天,他带着他的众多妹子进行了一次旅(dou)行(feng),由于lyd的车上妹子太多超重了,所以车速每秒最多只能改变d个单位,lyd在出 ...
- applicationContext-datasource.xml
<?xml version="1.0" encoding="utf-8"?> <beans default-init-method=" ...
- 读书笔记 - 《梦想与浮沉:A股十年上市博弈》
拿到这本书是个很偶然的事件.有几本软件业书由于太老已经绝版,偶然想到小区的图书馆自动借阅机和读者证的预借功能,就兴冲冲的跑去尝试.没想到预借只能在网页上进行,就随手从机器里借了这本书.没想到细观之下让 ...
- C# Task任务详解及其使用方式
https://blog.csdn.net/younghaiqing/article/details/81455410 C#多线程编程笔记(4.3)-Task任务中实现取消选项 https://blo ...
- <select> js中 设置选重
function ChangeSelect(n) { var selectnum=n; var kk = document.getElementById(&q ...
- 3 - EventLoop和线程模型-事件循环
a). EventLoopGroup为每个新创建的channel分配一个EventLoop,多个channel对应一个EventLoop. b). 一个EventLoop由一个不变的thread驱动, ...
- mysql报错this is incompatible with sql_mode=only_full_group_by
1.报错信息 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: In aggregated query without GROUP ...
- 安装xenserver过程中出现的问题
运行环境:win10系统,神舟战神z7m-KP7GT型号笔记本,VMWare虚拟机,XenServer7.2.0,XenCenter7.2.0 5月22日下午安装上xenserver虚拟机,发现虚拟机 ...
- java中过滤器、监听器、拦截器的区别
1.过滤器:所谓过滤器顾名思义是用来过滤的,在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的actio ...
- JS 分页实现
var pagesize = 5; var pageindex = 1; var pagetype; var parms; var nextSize = 1; var target; function ...