HDU 1102 Constructing Roads (最小生成树)
最小生成树模板(嗯……在kuangbin模板里面抄的……)
最小生成树(prim)
/** Prim求MST
* 耗费矩阵cost[][],标号从0开始,0~n-1
* 返回最小生成树的权值,返回-1表示原图不连通
*/
const int INF = 0x3f3f3f3f;
const int MAXN = 110; bool vis[MAXN];
int lowc[MAXN];
int map[MAXN][MAXN]; int Prim(int cost[][MAXN], int n)
{
int ans = 0;
memset(vis, false, sizeof(vis));
vis[0] = true;
for (int i = 1; i < n; ++i) lowc[i] = cost[0][i];
for (int i = 1; i < n; ++i) {
int minc = INF;
int p = 1;
for (int j = 0; j < n; ++j)
if (!vis[j] && minc > lowc[j]) {
minc = lowc[j];
p = j;
}
if (minc == INF) return -1;
ans += minc;
vis[p] = true;
for (int j = 0; j < n; ++j)
if (!vis[j] && lowc[j] > cost[p][j])
lowc[j] = cost[p][j];
}
return ans;
}
感觉Prim和Dijkstra有点像。写起来挺简单的。
我一开始的想法是把每个q中的a,b设为已访问节点,后来发现不对,例如ab连,dc连,但它们并不是全部相连的。
好吧其实此题就是把已建好两点之间距离设为0.
//Problem : 1102 ( Constructing Roads ) Judge Status : Accepted
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; const int N = 105;
const int INF = 3000; int map[N][N];
int vis[N];
int dis[N]; int Prim(int n)
{
int ans = 0;
memset(vis, 0, sizeof(vis));
for (int j = 1; j <= n; ++j) {
dis[j] = map[1][j];
}
for (int k = 1; k <= n; ++k) {
int minc = INF;
int p = 1;
for (int i = 1; i <= n; ++i) {
if (!vis[i] && dis[i] < minc) {
minc = dis[i];
p = i;
}
}
if (minc == INF) return -1;
ans += minc;
vis[p] = 1;
for (int j = 1; j <= n; ++j) {
if (map[p][j] < dis[j] && !vis[j])
dis[j] = map[p][j];
}
}
return ans;
} int main()
{
int n, q;
while (cin >> n) {
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= n; ++j)
cin >> map[i][j];
cin >> q;
int a, b;
for (int i = 0; i < q; ++i) {
cin >> a >> b;
map[a][b] = map[b][a] = 0;
}
cout << Prim(n) << endl;
}
return 0;
}
HDU 1102 Constructing Roads (最小生成树)的更多相关文章
- hdu 1102 Constructing Roads(最小生成树 Prim)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1102 Problem Description There are N villages, which ...
- (step6.1.4)hdu 1102(Constructing Roads——最小生成树)
题目大意:输入一个整数n,表示村庄的数目.在接下来的n行中,每行有n列,表示村庄i到村庄 j 的距离.(下面会结合样例说明).接着,输入一个整数q,表示已经有q条路修好. 在接下来的q行中,会给出修好 ...
- HDU 1102 Constructing Roads(最小生成树,基础题)
注意标号要减一才为下标,还有已建设的路长可置为0 题目 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include<str ...
- HDU 1102 Constructing Roads, Prim+优先队列
题目链接:HDU 1102 Constructing Roads Constructing Roads Problem Description There are N villages, which ...
- HDU 1102(Constructing Roads)(最小生成树之prim算法)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1102 Constructing Roads Time Limit: 2000/1000 MS (Ja ...
- hdu 1102 Constructing Roads (最小生成树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1102 Constructing Roads Time Limit: 2000/1000 MS (Jav ...
- hdu 1102 Constructing Roads (Prim算法)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1102 Constructing Roads Time Limit: 2000/1000 MS (Jav ...
- hdu 1102 Constructing Roads Kruscal
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1102 题意:这道题实际上和hdu 1242 Rescue 非常相似,改变了输入方式之后, 本题实际上更 ...
- HDU 1102 Constructing Roads
Constructing Roads Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
随机推荐
- ARM的工作环境和工作模式
工作环境: 可以称之为“数据环境,”数据总线16位或者32位,应用于不同的情况下.16位的情况下,工作速度快,代码密度高. 工作模式: 设置程序数据所处的状态,为移植操作系统提供方便.
- 一步步学习ASP.NET MVC3 (2)——入门程序
请注明转载地址:http://www.cnblogs.com/arhat 在上一节中,我们只是简单的介绍了什么是MVC及MVC的运行原理.而本节呢,主要来实现下一ASP.NET MVC3的开发流程,并 ...
- 简单的map转换成Bean的工具
简单的map转换成Bean的工具 package com.sd.microMsg.util; import java.lang.reflect.Field; import java.lang.refl ...
- ExtJS 获取浏览器宽度
JS中代码: Ext.onReady(function() { var width=window.screen.availWidth; var height=window.screen.availHe ...
- sql里条件is null 在thinkphp里
$map['字段名'] = array('exp',' is NULL'); 譬如:$condition['url'] = array('exp',' is NULL');
- SpringMVC可以配置多个拦截后缀*.html和.do等
一个servlet可以配置多个servlet-mapping, 因此在xml文件中我们可以这样配置: <!-- springmvc配置 --> <servlet> <se ...
- edx 配置smtp发送邮件
参考文章:https://github.com/CDOT-EDX/ProductionStackDocs/wiki/Enable-SMTP-for-EDX-(Production-Stack) 具体到 ...
- Native Application 开发详解(直接在程序中调用 ntdll.dll 中的 Native API,有内存小、速度快、安全、API丰富等8大优点)
文章目录: 1. 引子: 2. Native Application Demo 展示: 3. Native Application 简介: 4. Native Ap ...
- QT4项目升级到QT5遇到的问题和解决方法
QT4升级到QT5改动: PC部分: [改QTDIR变量] 在工程根目录下找到.user文件, 如InnoTabPlugin.vcxproj.user 修改指向你的QT5根目录: <Proper ...
- Nuget
Install-Package Microsoft.AspNet.WebApi.Cors