道路建设问题是牵扯最小生树的算法,但是根据具体的情况有时并不需要真的去生成树,这道题就是这样,我们只需要标记哪些地点已经连接。这次的代码使用的是点贪心(prim算法),相对而言更简单实现,边贪心(kruskl算法)还要牵扯并查集相对繁琐。

问题来源:https://ac.nowcoder.com/acm/problem/15108

变量解析:

int num[105];标记城市是否已连接,连接为1,初始化为-1(其他也可以)
int juzhen[105][105];邻接矩阵表示图
int money,n,m,sum;记录资金,道路总数,城市总数
int a,b,c;中间变量

具体代码:

#include<stdio.h>
#include<string.h>
int num[105];
int juzhen[105][105];
int money,n,m,sum;
int a,b,c;
void jia(){int d=1;a=0,b=0,c=999;for(int i=1;i<m;i++){if(num[i]==1){for(int j=2;j<=m;j++){if(juzhen[i][j]<c&&num[j]!=1){//这里不需要判断i是否等于j,因为num[i]为1,相等时条件不成立。a=i,b=j;c=juzhen[i][j];}}}}sum+=juzhen[a][b];num[b]=1;juzhen[a][b]=999;juzhen[b][a]=999;
}
int main(){while(scanf("%d%d%d",&money,&n,&m)==3){sum=0;for(int i=1;i<=m;i++){for(int j=1;j<=m;j++){juzhen[i][j]=999;//只要比题干上的100大就可以,子函数里的判断提供方便}num[i]=-1;//不使用memset函数,是因为memset函数只能初始化为0或-1}num[1]=1;for(int i=0;i<n;i++){scanf("%d%d%d",&a,&b,&c);if(juzhen[a][b]>c){juzhen[a][b]=c;juzhen[b][a]=c;}}for(int i=1;i<m;i++)jia();if(sum<=money)printf("Yes\n");else printf("No\n");}return 0;
}

如果代码过不了,可以插入一些代码来测试,输出矩阵的内容,sum每次的变化,可以很好的了解问题!

道路建设(最小生成树)相关推荐

  1. 最小生成树——道路建设

    最小生成树--道路建设 题目描述: 随着如今社会的不断变化,交通问题也变得越来越重要,所以市长决定建设一些公路来方便各个城市之间的贸易和交易.虽然市长的想法很好,但是他也遇到了一般人也经常头疼的问题, ...

  2. 洛谷——P2872 [USACO07DEC]道路建设Building Roads

    P2872 [USACO07DEC]道路建设Building Roads 题目描述 Farmer John had just acquired several new farms! He wants ...

  3. 【道路建设——Prim】

    道路建设 文章目录 道路建设 题目描述 输入描述: 输出描述: 示例 AC代码: 总结 题目描述 随着如今社会的不断变化,交通问题也变得越来越重要,所以市长决定建设一些公路来方便各个城市之间的贸易和交 ...

  4. USACO07DEC道路建设Building Roads(prim算法+堆优化与Kruskal+路径压缩对比)

    目录 primprimprim算法 KruskalKruskalKruskal算法 P2872 [USACO07DEC]道路建设Building Roads 4 1 1 1 3 1 2 3 4 3 1 ...

  5. 问题 B: 道路建设 (Ver. I)

    问题 B: 道路建设 (Ver. I) 题目描述 有N个村庄,编号从1到N,你应该建造一些道路,使每个村庄都可以相互连接. 两个村A和B是相连的,当且仅当A和B之间有一条道路,或者存在一个村C使得在A ...

  6. POJ--3352 道路建设

    POJ–3352 道路建设 题目描述 输入样例1 10 12 1 2 1 3 1 4 2 5 2 6 5 6 3 7 3 8 7 8 4 9 4 10 9 10 输出样例1 2 输入样例2 3 3 1 ...

  7. C/C++数据结构——道路建设(最小生成树Prim)

    题目描述 随着如今社会的不断变化,交通问题也变得越来越重要,所以市长决定建设一些公路来方便各个城市之间的贸易和交易.虽然市长的想法很好,但是他也遇到了一般人也经常头疼的问题,那就是手头的经费有限--在 ...

  8. bzoj 1626: [Usaco2007 Dec]Building Roads 修建道路(最小生成树)

    1626: [Usaco2007 Dec]Building Roads 修建道路 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1709  Solved ...

  9. 牛客 NC15108 道路建设

    题目描述 随着如今社会的不断变化,交通问题也变得越来越重要,所以市长决定建设一些公路来方便各个城市之间的贸易和交易.虽然市长的想法很好,但是他也遇到了一般人也经常头疼的问题,那就是手头的经费有限--在 ...

最新文章

  1. 容器 root权限运行_【漏洞通告】Containerd容器逃逸漏洞通告 (CVE202015257)
  2. Java 读取 dwg 转换 dxf
  3. 深入理解 Flutter 的编译原理与优化
  4. 使用ImpromptuInterface反射方便的创建自定义DfaGraphWriter
  5. mysql 5.5半同步复制_(5.5)mysql高可用系列——MySQL半同步复制(实践)
  6. 通过字符串的方式读取文件的内容
  7. 汇编语言调用c语言ads,ADS1.2 在汇编代码中调用C函数
  8. java与html关联_HTML页和ashx页之间的关联
  9. Objdump查看汇编和源码
  10. Shader实例:NGUI制作网格样式血条
  11. Win10秘笈:两种方式修改网卡物理地址(MAC)
  12. Python中具有不确定个数参数的函数
  13. 体验与对比新版EBS gp3 vs gp2
  14. ASR6505基于STM 8位MCU与SX1262 的SiP全频段LoRa芯片
  15. 烽火2640路由器命令行手册-03-广域网配置命令
  16. SAP定义条目视图的凭证编号范围
  17. Centos7修改DNS教程
  18. 23-高级路由:BGP配置(MPLS-解决路由黑洞)
  19. Redis 50问
  20. C#获取本周的周一以及周日

热门文章

  1. lol选区界面显示连接服务器,LOL全新客户端选区界面
  2. 【科研经验】刚读博士想退学?如何避免博士毕业不了?
  3. 自学SQL网题解(0-5课题解)
  4. Java【网络编程1】使用 UDP 的 Socket API 实现客户端服务器通信(保姆级教学, 附代码)
  5. 业务:财务软件之会计六要素
  6. Spark 期末复习--RDD总结(包含经典练习题)
  7. 通过poi导出复杂excel既有合并行又有合并列
  8. android 系统升级 方法,ROM之家简析:Android手机系统怎么升级
  9. 填补首飞遗憾!SpaceX 重型猎鹰火箭首次商业发射成功
  10. 44Echarts - 柱状图(阶梯瀑布图)