题目描述

省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的最低成本。

输入

测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( 1< N < 100 );随后的 N(N-1)/2 行对应村庄间道路的成本及修建状态,每行给4个正整数,分别是两个村庄的编号(从1编号到N),此两村庄间道路的成本,以及修建状态:1表示已建,0表示未建。

当N为0时输入结束。

输出

每个测试用例的输出占一行,输出全省畅通需要的最低成本。

样例输入

4
1 2 1 1
1 3 6 0
1 4 2 1
2 3 3 0
2 4 5 0
3 4 4 0
3
1 2 1 1
2 3 2 1
1 3 1 0
0

样例输出

3
0

WA原因:运行错误50%,还是数组越界的原因...

#include <iostream>
#include <algorithm>
#include <vector>using namespace std;const int maxn = 100+10;
const int inf = 1000000000;int a; //村庄数目//kruskal
struct edge
{int u, v, dis, state;
}E[maxn];int father[maxn];
int find_father(int x)
{int a = x;while(x != father[x]){x = father[x];}while(a != father[a]){int z = a;a = father[a];father[z] = x;}return x;
}bool cmp(edge a, edge b)
{return a.dis < b.dis;
}int kruskal(int n, int m)
{int ans1 = 0, num_edge = 0;for(int i = 1; i <= n; i++){father[i] = i;}for(int i = 0; i < m; i++){if(E[i].state == 1) //建好了{int u = E[i].u;int v = E[i].v;father[find_father(u)] = find_father(v);num_edge++;}}sort(E, E+m, cmp);for(int i = 0; i < m; i++){int fa = find_father(E[i].u);int fb = find_father(E[i].v);if(fa != fb){father[fa] = fb;ans1 += E[i].dis;num_edge++;if(num_edge == n - 1) break;}}if(num_edge != n - 1){return -1;}else return ans1;
}int main()
{while(scanf("%d", &a) != 0){int b = a * (a-1) / 2;for(int i = 0; i < b; i++){scanf("%d%d%d%d", &E[i].u, &E[i].v, &E[i].dis, &E[i].state);}int ans = kruskal(a, b);if(ans == -1) break;else printf("%d\n", ans);}return 0;
}

Codeup墓地-问题 D: 继续畅通工程相关推荐

  1. Codeup墓地-问题 A: 还是畅通工程

    题目描述 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公 ...

  2. codeup墓地目录(算法笔记习题刷题笔记)

    在线codeup contest 地址:http://codeup.cn/contest.php Contest100000575 - <算法笔记>3.1小节--入门模拟->简单模拟 ...

  3. codeup墓地目录

    代码内容为原创C++ 在线codeup contest 地址:http://codeup.cn/contest.php Contest100000575 - <算法笔记>3.1小节--入门 ...

  4. [kuangbin带你飞]专题六 最小生成树 L - 还是畅通工程 (简单最小生成树)

    L - 还是畅通工程 题目链接:https://vjudge.net/contest/66965#problem/L 题目: 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府&qu ...

  5. 并查集 HDOJ 1232 畅通工程

    题目传送门 1 /* 2 并查集(Union-Find)裸题 3 并查集三个函数:初始化Init,寻找根节点Find,连通Union 4 考察:连通边数问题 5 */ 6 #include <c ...

  6. 畅通工程//最小生成树prim

    题目: 畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  7. 【1863】畅通工程 (HDU)

     畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Su ...

  8. HDOJ 1874 HDU 1874 畅通工程续 ACM 1874 IN HDU

    MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 题目地址:          http://acm.hdu.edu.cn/showproblem.php?pid=1874 ...

  9. 畅通工程 HDU - 1233 

    某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可 ...

最新文章

  1. Android签名机制之---签名验证过程详解
  2. 整合Flume和Kafka完成实时数据采集
  3. python对键和值有没有类型限制_第026课:词典:索引不易使用时2,讲,字典,当,不好...
  4. Linux RPM、YUM、APT包管理工具
  5. java考前复习之数组
  6. 安装tif虚拟打印机
  7. SpringMVC中的父子容器关系
  8. 是什么的简称_全国各地区车牌号简称,说说你们那的车牌是什么?
  9. uniapp 小程序支付功能
  10. 配对和非配对t检验的差异
  11. 说明:最新谷歌AI智商不超过6岁研究来自科学院而非康内尔大学
  12. Android 实现应用桌面角标
  13. win7 查看php版本信息,window_Windows系统版本怎么看?2种查看windows版本的方法介绍,前段时间微软正式开始向Win7和 - phpStudy...
  14. JAVA的循环结构以及简单操作
  15. 基于ffplay改造成自定义多开播放器
  16. Unity android平台读取文件
  17. Docker安装Elasticsearch及安装中文分词插件
  18. 了解和深入行业/APP分类
  19. python元祖修改_Python列表的增删改查和元祖
  20. 【嵌入式开发教程6】手把手教你做平板电脑-触摸屏驱动实验教程

热门文章

  1. 圣诞前夜预告|深入理解Linux内核经验分享
  2. LiveVideoStackCon 2020北京站-售票通道关闭倒计时1天
  3. 音视频技术开发周刊 | 152
  4. 【LiveVideoStack线上分享】— 视频生产环境下的音视频解决方案
  5. 音视频技术开发周刊(第130期)
  6. Xilinx视频加速技术专场
  7. 傅德良:选择视频编码器的误区
  8. 梁俊斌:音频技术可以延展众多应用场景
  9. Janus流媒体服务器信令分析
  10. LeetCode——BFS