Problem Description
省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的最低成本。
Input
测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( 1< N < 100 );随后的 N(N-1)/2 行对应村庄间道路的成本及修建状态,每行给4个正整数,分别是两个村庄的编号(从1编号到N),此两村庄间道路的成本,以及修建状态:1表示已建,0表示未建。

当N为0时输入结束。

Output
每个测试用例的输出占一行,输出全省畅通需要的最低成本。
Sample Input
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 0
Sample Output
3 1 0
[c-sharp] view plaincopy
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <string.h>
  4. #define MAX 105
  5. #define MAXCOST 99999999
  6. int n;
  7. int sum;
  8. int graph[MAX][MAX];
  9. void Prim()
  10. {
  11. int i,j,k,min;
  12. int lowcost[MAX];
  13. int adjvex[MAX];
  14. for(i=1;i<n;i++)
  15. lowcost[i]=graph[0][i];   //从第一个的顶点开始
  16. memset(adjvex,0,sizeof(adjvex));
  17. min=MAXCOST;
  18. for(i=1;i<n;i++)
  19. {
  20. min=MAXCOST;
  21. for(j=1;j<n;j++)
  22. if(adjvex[j]==false && lowcost[j]<min)
  23. {
  24. min=lowcost[j];
  25. k=j;    //记下最小的点
  26. }
  27. adjvex[k]=true;   //为true表示该权值已经是最小,为flase是还不确定,应继续更新
  28. for(j=1;j<n;j++)
  29. {
  30. if(adjvex[j]==false && lowcost[j]>graph[k][j])  //更新lowcost
  31. lowcost[j]=graph[k][j];
  32. }
  33. }
  34. for(i=1;i<n;i++)
  35. sum+=lowcost[i];  //这就是最小生成树
  36. }
  37. int main()
  38. {
  39. int m,i,j,a,b,c,d;
  40. while (scanf("%d",&n),n)
  41. {
  42. for (i=0;i<n;i++)
  43. {
  44. for (j=0;j<n;j++)
  45. {
  46. graph[i][j] = graph[j][i] = MAXCOST;
  47. }
  48. }
  49. m=n*(n-1)/2;
  50. for (i=1;i<=m;i++)
  51. {
  52. scanf("%d%d%d%d",&a,&b,&c,&d);
  53. if(d==0)
  54. graph[a-1][b-1]=graph[b-1][a-1]=c;
  55. else
  56. graph[a-1][b-1]=graph[b-1][a-1]=0;
  57. }
  58. sum=0;
  59. Prim();
  60. printf("%d/n",sum);
  61. }
  62. return 0;
  63. }

HDU 1879(最小生成树问题,Prim)相关推荐

  1. 实验1 最小生成树问题【Kruskal+Prim】

    1.贪心算法思想 贪心算法的基本思想是找出整体当中每个小的局部的最优解,并且将所有的这些局部最优解合起来形成整体上的一个最优解.因此能够使用贪心算法的问题必须满足下面的两个性质: 1.整体的最优解可以 ...

  2. 【数据结构笔记29】最小生成树问题:Prim算法与Kruskal算法

    本次笔记内容: 8.1.1 Prim算法 8.1.2 Kruskal算法 文章目录 最小生成树问题 什么是最小生成树(Minimum Spanning Tree) 贪心算法 Prim算法 Kruska ...

  3. 数据结构与算法-Prim算法解析与解决修路最小生成树问题

    文章目录 简介 Prim算法 最小生成树 应用场景 问题描述 思路分析 代码实现 简介 Prim算法 ​ 普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索 ...

  4. 【数据结构】最小生成树问题(Prim算法和Kruskal算法)

    相关概念 连通图与它的生成树 连通图的生成树是包含图中全部顶点的一个极小连通子图.若图的顶点数为n,则它的生成树含有n-1条边.一个连通图可能拥有多个生成树. 最小生成树(Minimum-Spanni ...

  5. 使用贪心算法解决最小生成树问题。

    使用贪心算法解决最小生成树问题. #include<iostream> #include<algorithm> using namespace std; const int M ...

  6. 【算法】Kruskal算法(解决最小生成树问题) 含代码实现

    Kruskal算法和Prim算法一样,都是求最小生成树问题的流行算法. 算法思想: Kruskal算法按照边的权值的顺序从小到大查看一遍,如果不产生圈或者重边,就把当前这条边加入到生成树中. 算法的正 ...

  7. 最小生成树 kruskal_使用Kruskal算法求解Java最小生成树问题

    最小生成树 kruskal In Electronic Circuit we often required less wiring to connect pins together. We can m ...

  8. Python小白的数学建模课-18.最小生成树问题

    Python小白的数学建模课-18.最小生成树问题 最小生成树(MST)是图论中的基本问题,具有广泛的实际应用,在数学建模中也经常出现. 路线设计.道路规划.官网布局.公交路线.网络设计,都可以转化为 ...

  9. 数学建模之图论——图与网络模型(二)(最小生成树问题、最大流问题)

    建议先看上一篇基本概念篇 https://blog.csdn.net/weixin_45755332/article/details/106899147 最小生成树 基本概念和方法 树:没有圈的连通图 ...

  10. 关于单向TSP旅行商问题/修路问题/最小生成树问题的求解讨论

    旅行商问题,又称旅行者,推销员问题,货郎担问题.该问题十分经典,几十年前用于计算机国际竞赛,现在被用来作为算法的入门练习. 假设有一个商人要拜访n个城市,他必须走完所有路径,且路径不能重复,并且走到最 ...

最新文章

  1. python3下载文件-在Python 3中从Web下载文件
  2. 高斯判别分析(GDA)和朴素贝叶斯(NB)
  3. vue怎么传数据给后台_千万日活级产品人必备:数据监控后台之数据指标怎么选?...
  4. 查看环境变量有无配置成功等命令操作
  5. 互联网日报 | 华为Mate40系列国内发布;陆金所在纽交所挂牌上市;苹果大中华区营收大降28.6%...
  6. React Native Styling:样式化的组件,Flexbox布局等
  7. android double转string_如何使用Java程序将Double转换为String
  8. DOS各版本下载地址
  9. DZ先生怪谈国标之视音频文件检索
  10. Unity-3D游戏开发套件指南(入门篇)-免费资源
  11. 10uF的电容能滤除什么频率的电源纹波?
  12. 知物由学 | 垃圾内容肆虐,自监督学习助力“内容风控”效果提升
  13. 南大金陵学院 计算机,以赛促学,南大金陵学子在全国大学生计算机设计大赛摘得一等奖1项和二等奖4项...
  14. 2.一个简单的Servlet容器
  15. oracle数据库恢复aul_AUL6数据恢复总结_20140404
  16. UCML.NET开发平台 - 产品简介
  17. ubuntu配置双拼输入法
  18. Origin软件使用技巧(1),Origin科研绘图2022中文版下载安装
  19. 世界名校人工智能实验室网址(研究方向)
  20. 强化学习——值函数与Bellman方程

热门文章

  1. 【Android 安装包优化】WebP 应用 ( Android 中使用 libwebp.so 库编码 WebP 图片 )
  2. 【组合数学】鸽巢原理 ( 鸽巢原理简单形式示例 4、5 )
  3. Vue状态管理之Vuex
  4. python反转链表和成对反转
  5. MyBatis传入多个参数的问题
  6. PHP调试的时候遇到Warning: session_start() [function.session-
  7. 【有美女看】提升用户体验,你不得不知道的事儿——巧用全屏与沉浸式体验,让用户更舒心~...
  8. 设置同一Label内涵不同颜色字体
  9. IOS第三天(@property与@synthesize的用法)
  10. 分页控件-ASP.NET(AspNetPager)