8-06. 畅通project之局部最小花费问题(35)(最小生成树_Prim)(ZJU_PAT)
题目链接:http://pat.zju.edu.cn/contests/ds/8-06
某地区经过对城镇交通状况的调查。得到现有城镇间高速道路的统计数据,并提出“畅通project”的目标:使整个地区不论什么两个城镇间都能够实现高速交通(但不一定有直接的高速道路相连,仅仅要互相间接通过高速路可达就可以)。现得到城镇道路统计表,表中列出了随意两城镇间修建高速路的费用,以及该道路是否已经修通的状态。现请你编敲代码。计算出全地区畅通须要的最低成本。
输入格式说明:
输入的第1行给出村庄数目N (1<=N<=100);随后的 N(N-1)/2 行相应村庄间道路的成本及修建状态:每行给出4个正整数,各自是两个村庄的编号(从1编号到N),此两村庄间道路的成本,以及修建状态 — 1表示已建,0表示未建。
输出格式说明:
输出全省畅通须要的最低成本。
例子输入与输出:
序号 | 输入 | 输出 |
1 |
3 |
3 |
2 |
3 |
1 |
3 |
3 |
0 |
PS:
用最小生成树的prim跑一下就好了。2333333……
代码例如以下:
#include <cstdio>
#include <cstring>
#include <iostream>
#define INF 0x3f3f3f3f
const int maxn = 117;
int m[maxn][maxn];
int vis[maxn], low[maxn];
int n;
int prim()
{
vis[1] = 1;
int sum = 0;
int pos, minn;
pos = 1;
for(int i = 1; i <= n; i++)
{
low[i] = m[pos][i];
}
for(int i = 1; i < n; i++)
{
minn = INF;
for(int j = 1; j <= n; j++)
{
if(!vis[j] && minn > low[j])
{
minn = low[j];
pos = j;
}
}
sum += minn;
vis[pos] = 1;
for(int j = 1; j <= n; j++)
{
if(!vis[j] && low[j] > m[pos][j])
{
low[j] = m[pos][j];
}
}
}
return sum;
}
int main()
{
int a, b, c, d;
while(~scanf("%d",&n))
{
int nn = n*(n-1)/2;
memset(vis,0,sizeof(vis));
memset(m,0,sizeof(m));
for(int i = 1; i <= nn; i++)
{
scanf("%d%d%d%d",&a,&b,&c,&d);
if(d == 0)//未修建的才建图
{
m[a][b] = c;
m[b][a] = c;
} }
int ans = prim();
printf("%d\n",ans);
}
return 0;
}
/*
3
1 2 1 0
1 3 2 0
2 3 4 0
3
1 2 1 0
1 3 2 0
2 3 4 1
3
1 2 1 0
1 3 2 1
2 3 4 1
*/
8-06. 畅通project之局部最小花费问题(35)(最小生成树_Prim)(ZJU_PAT)的更多相关文章
- PTA 7-2 畅通工程之局部最小花费问题 (35分)
PTA 7-2 畅通工程之局部最小花费问题 (35分) 某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出"畅通工程"的目标:使整个地区任何两个城镇间都可以实 ...
- PTA 7-1 畅通工程之局部最小花费问题(35 分)
7-1 畅通工程之局部最小花费问题(35 分) 某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的 ...
- pta7-20 畅通工程之局部最小花费问题(Kruskal算法)
题目链接:https://pintia.cn/problem-sets/15/problems/897 题意:给出n个城镇,然后给出n×(n-1)/2条边,即每两个城镇之间的边,包含起始点,终点,修建 ...
- PTA 7-50 畅通工程之局部最小花费问题(最小生成树Kruskal)
某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可). ...
- 杭电1233还是畅通project
还是畅通project Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- HDU 1875 畅通project再续 (最小生成树 水)
Problem Description 相信大家都听说一个"百岛湖"的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其它的小岛时都要通过划小船来实现. 如今政府决定大力发展百岛 ...
- 畅通project再续 HDU杭电1875 【Kruscal算法 || Prim】
Problem Description 相信大家都听说一个"百岛湖"的地方吧.百岛湖的居民生活在不同的小岛中.当他们想去其它的小岛时都要通过划小船来实现.如今政府决定大力发展百岛湖 ...
- hdoj 1875 畅通project再续【最小生成树 kruskal && prim】
畅通project再续 Problem Description 相信大家都听说一个"百岛湖"的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其它的小岛时都要通过划小船来实现. ...
- hdu 1875 畅通project再续(kruskal算法计算最小生成树)
畅通project再续 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
随机推荐
- vw 解决方案
vw 解决方案 1. 安装并配置PostCss插件 复制代码代码如下: npm i postcss-aspect-ratio-mini postcss-px-to-viewport postcss-w ...
- STM32应用实例六:与MS5837压力传感器的I2C通讯
MS5837压力传感器是一种可用于电路板上,适用于检测10-1200mbar压力范围的传感器,灵敏度非常高,理论上能够检测到0.01mbar的压力变化,实际使用过程中测试并无明显的变化. MS5837 ...
- Oracle 服务器结构
[学习目标] 作为一个数据库管理员(DBA),经常会遇到各种没有见过的问题.除了宝贵的经验外, 通过理论基础去对问题进行判断.解决是至关重要的.因此,Oracle 服务器的结构和组成 是学习Oracl ...
- Quartz 定时邮件发送多个备份文件
项目代码 pom.xml 文件Quartz 的包是整个项目不可缺少的 <properties> <!-- Spring的版本 --> <springframework.v ...
- dede 相关推荐调用
{dede:likeart row=5 titlelen=40} <div class="xl12 xs6 xm4 xb3 proitem"> <a href=& ...
- Renderscript图像处理
作者:慧能 最近正在学习renderscript,后期会整理一篇完整的文档,先记着.... https://blog.csdn.net/codemydream/article/details/5346 ...
- 你可能不知道的git clean
git clean是干啥的? git clean可以帮你清理workspace中未被git版本控制的文件,比如临时文件,构建出来的二进制文件. 使用方法 如果你的clean.requireForce项 ...
- PowerDesigner表创建脚本双引号问题
在使用PowerDesigner表属性的Preview查看创建脚本的时候,发现大多表名和字段名都加上了双引号,而且有引号的都是大小写混合的,导致创建的表里,表名和字段名也都是大小写混合的. 在一番搜索 ...
- IntelliJ IDEA快捷键:Ctrl+Shift+空格
The smart type code completion may be used after the new keyword,to instantiate an object of the exp ...
- gulp给文件加版本号
版本号用文件MD5生成 默认根据文件MD5生成,因此文件未发生改变,此版本号将不会变 所以当没有改变文件的时候,我们就不能用gulp来改变版本号了 需要安装的插件 npm install --save ...