博客
关于我
7-10 公路村村通
阅读量:317 次
发布时间:2019-03-04

本文共 1509 字,大约阅读时间需要 5 分钟。

题目链接:

题目描述:

现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。

输入格式:

输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。

输出格式:

输出村村通需要的最低成本。如果输入数据不足以保证畅通,则输出−1,表示需要建设更多公路。

输入样例:

6 15
1 2 5
1 3 3
1 4 7
1 5 4
1 6 2
2 3 4
2 4 6
2 5 2
2 6 6
3 4 6
3 5 1
3 6 1
4 5 10
4 6 8
5 6 3

输出样例:

12

样例示意图:

在这里插入图片描述
将输入数据按照关键字cost进行升序排序。
在这里插入图片描述
村村通的最小生成树。

题目思路:最小生成树的求解。

kruskal算法参考代码

#include 
#include
int n,m;int sum=0,count=0;int parent[1001];struct node{ int A; int B; int cost;}a[3001];/*并查集之初始化操作*/void init(){ int i; for(i=1;i<=n;i++) parent[i]=i;}/*并查集之查找根节点操作*/int find(int x){ if(x==parent[x]) return x; else return parent[x]=find(parent[x]);}/*qsort()比较函数*/int cmp(const void *a,const void *b){ struct node* pa=(struct node*)a; struct node* pb=(struct node*)b; int num1=pa->cost; int num2=pb->cost; return num1-num2;}/*将边按权值排好序后,如果加入该边不构成回路,则将该边加入图中。*/void kruskal(){ int i; for(i=0;i

prim算法求解:

#include 
#include
#define INF 65535int n,m;int map[1001][1001];int visited[1001];int dist[1001];void init(){ int i,j; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) map[i][j]=INF; }}int prim(int s){ memset(visited,0,sizeof(visited)); int i,j,sum=0; for(i=1;i<=n;i++) dist[i]=map[s][i]; visited[s]=1; for(i=1;i
map[pos][j]) dist[j]=map[pos][j]; } } for(i=1;i<=n;i++) { sum+=dist[i]; if(dist[i]==INF) return -1; } return sum;}int main(){ scanf("%d%d",&n,&m); int i,x,y,z; for(i=0;i

转载地址:http://izrq.baihongyu.com/

你可能感兴趣的文章
Linux学习总结(九)—— CentOS常用软件安装:中文输入法、Chrome
查看>>
比技术还重要的事
查看>>
linux线程调度策略
查看>>
软中断和实时性
查看>>
Linux探测工具BCC(可观测性)
查看>>
SNMP介绍及使用,超有用,建议收藏!
查看>>
HDU5589:Tree(莫队+01字典树)
查看>>
不停机替换线上代码? 你没听错,Arthas它能做到
查看>>
Python开发之序列化与反序列化:pickle、json模块使用详解
查看>>
采坑 - 字符串的 "" 与 pd.isnull()
查看>>
无序列表 - 链表
查看>>
Matplotlib绘制漫威英雄战力图,带你飞起来!
查看>>
机器学习是什么
查看>>
《你当像鸟飞往你的山》总结
查看>>
《我是猫》总结
查看>>
《抗糖化书》总结
查看>>
apache虚拟主机配置
查看>>
mcrypt加密以及解密过程
查看>>
go等待N个线程完成操作总结
查看>>
ReactJs入门教程-精华版
查看>>