题目链接: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
1 2 1 0
1 3 2 0
2 3 4 0
3
2
3
1 2 1 0
1 3 2 0
2 3 4 1
1
3
3
1 2 1 0
1 3 2 1
2 3 4 1
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)相关推荐

  1. 7-50 畅通工程之局部最小花费问题 (35 分)(思路加详解)来呀兄弟们冲呀呀呀呀呀呀呀

    一:题目 某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出"畅通工程"的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要 ...

  2. D38| DP理论基础 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

    DP理论基础 重要知识点: 1.动规和贪心的区别:动规是由前一个状态推导出来的,而贪心是局部直接选最优的 2.动规五部曲: 1)确定dp数组(dp table)以及下标的含义 2)确定递推公式 3)d ...

  3. keras如何解决局部最小问题

    keras如何解决局部最小问题 https://ruder.io/optimizing-gradient-descent/index.html#rmsprop keras如何解决局部最小问题 API ...

  4. hdu1874 畅通project续 最短路 floyd或dijkstra或spfa

    Problem Description 某省自从实行了非常多年的畅通project计划后.最终修建了非常多路.只是路多了也不好,每次要从一个城镇到还有一个城镇时,都有很多种道路方案能够选择.而某些方案 ...

  5. hdu4122 制作月饼完成订单的最小花费

    题意:       有一个加工厂加工月饼的,这个工厂一共开业m小时,2000年1月1日0点是开业的第一个小时,每个小时加工月饼的价钱也不一样,然后每个月饼的保质期都是t天,因为要放在冰箱里保存,所以在 ...

  6. ZOJ3715 竞选班长求最小花费

    题意:       有n个小朋友竞选班长,一号想当班长,每个人都必须选择一个人当班长,并且不可以选择自己,并且每个人都有一个权值ai,这个权值就是如果1想让这个人改变主意选择自己当班长就得给他ai个糖 ...

  7. 在数组中找到一个局部最小的位置

    题目 定义局部最小的概念.arr长度为1时,arr[0]是局部最小.arr的长度为N(N>1)时,如果arr[0] < arr[1],那么arr[0]是局部最小:如果arr[N-1] &l ...

  8. LeetCode-动态规划基础题-746. 使用最小花费爬楼梯

    描述 746.使用最小花费爬楼梯 数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始). 每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应 ...

  9. 1230: 最小花费(spfa)

    1230: 最小花费 时间限制: 1 Sec 内存限制: 128 MB 题目描述 在n个人中,某些人的银行账号之间可以互相转账.这些人之间转账的手续费各不相同.给定这些人之间转账时需要从转账金额里扣除 ...

  10. LeetCode Algorithm 746. 使用最小花费爬楼梯

    746. 使用最小花费爬楼梯 Ideas 首先确定题目类型,爬楼梯问题,并且给定了状态转移的限制,其实就已经可以确定状态转移方程了. 然后题目说可以从下标为0或下标为1的台阶开始爬,所以我们可以定义两 ...

最新文章

  1. RadASM的测试工程!
  2. pytest接口测试之fixture传参数request
  3. AR智能提升工业效率的4大场景与应用实践!
  4. ztree.js的使用整理
  5. Python基础:一起来面向对象 (二) 之搜索引擎
  6. vs2013和mysql连接_安装VS2013后与数据库的连接问题
  7. PyCharm之python书写规范--消去提示波浪线
  8. 高效程序员的 7 项技能
  9. Python中的错误处理
  10. 取代 Postman + Swagger!这款神器功能更强大,界面更炫酷!
  11. vue+vue-cli2+webpack配置资源cdn
  12. vue : 无法加载文件 D:\Program Files\nodejs\vue.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsof t.com/fwlin
  13. 按键精灵手机助手php通讯,按键精灵手机助手教程_按键精灵手机助手怎么连接手机...
  14. 在window10中怎样连接扫描仪,扫描证件
  15. 高通X12平台XO信号干扰灵敏度的解决方案
  16. 构词法重新辨析triweekly与entrance
  17. win10计算机属性管理打不开,win10无法打开设置应用的两种解决方法【图文】
  18. 中台建设:中台有效落地的6脉神剑
  19. ipad/iphone的浏览器,为啥可以播放优酷土豆等在线视频
  20. Android之获取移动网络ip

热门文章

  1. cocos2D icon
  2. 088 菱形继承问题
  3. Jmeter学习之旅(四)——各类型的HTTP接口功能测试
  4. Linux上运行Python文件
  5. python 装饰器,登录小练习
  6. asp.net Json序列化
  7. ICSharpCode.SharpZipLib实现压缩解压缩
  8. 迪杰斯特拉算法c语言实现
  9. 如何将SL的image保存到SL的独立存储文件系统
  10. MySQL5 使用概要