电话连线(最小生成树)
codevs——1003 电话连线
一个国家有n个城市。若干个城市之间有电话线连接,现在要增加m条电话线(电话线当然是双向的了),使得任意两个城市之间都直接或间接经过其他城市有电话线连接,你的程序应该能够找出最小费用及其一种连接方案。
输入文件的第一行是n的值(n<=100).
第二行至第n+1行是一个n*n的矩阵,第i行第j列的数如果为0表示城市i与城市j有电话线连接,否则为这两个城市之间的连接费用(范围不超过10000)。
输出文件的第一行为你连接的电话线总数m,第二行至第m+1行为你连接的每条电话线,格式为i j,(i<j), i j是电话线连接的两个城市。输出请按照Prim算法发现每一条边的顺序输出,起始点为1.
第m+2行是连接这些电话线的总费用。
5
0 15 27 6 0
15 0 33 19 11
27 33 0 0 17
6 19 0 0 9
0 11 17 9 0
2
1 4
2 5
17
n<=100
分类标签 Tags 点此展开
#include<iostream> #include<cstdio> using namespace std; const int MAX=105; const int INF=100000000; int g[MAX][MAX],lowcost[MAX]; int v[MAX],n,a[MAX],b[MAX],o[MAX],sum=0; int prim() {for(int i=2;i<=n;++i){lowcost[i]=g[1][i];a[i]=1;b[i]=i;}v[1]=1;int x=0;for(int i=1;i<=n-1;++i){int j=0,mn=INF,l=0,t=0;for(int k=2;k<=n;++k)if(!v[k]&&lowcost[k]<mn){mn=lowcost[k];o[sum]=k;j=k;}x+=mn;v[j]=1;if(mn!=0)sum++;for(int k=2;k<=n;++k)if(!v[k]&& j!=k && g[j][k]<lowcost[k]){lowcost[k]=g[j][k];a[k]=j;}}cout<<sum<<endl;for(int i=0;i<sum;i++){if(a[o[i]]<b[o[i]])printf("%d %d\n",a[o[i]],b[o[i]]);else printf("%d %d\n",b[o[i]],a[o[i]]);}return x; } int main() {cin>>n;for(int i=1;i<=n;++i){lowcost[i]=INF;v[i]=0;}for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)cin>>g[i][j];cout<<prim()<<endl;return 0; }
转载于:https://www.cnblogs.com/z360/p/6863955.html
电话连线(最小生成树)相关推荐
- CodeVS 1003 电话连线
CodeVS 1003 电话连线 By MPS 542479042@qq.com -------- ...
- 数据结构与算法(7-3)最小生成树(普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法)
目录 一.最小生成树简介 二.普里姆算法(Prim) 1.原理 2.存储 2-1.图顶点和权: 2-3. 最小生成树: 3.Prim()函数 3-1.新顶点入树 3-2.保留最小权 3-3. 找到最小 ...
- [kuangbin带你飞]专题六 最小生成树 L - 还是畅通工程 (简单最小生成树)
L - 还是畅通工程 题目链接:https://vjudge.net/contest/66965#problem/L 题目: 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府&qu ...
- 图的算法专题——最小生成树
概要: Prim算法 Kruskal算法 1.Prim算法 算法流程: (1)对图G(V,E)设置集合S来存放已被并入的顶点,然后执行n次(2)(3) (2)每次从未并入顶点集合中选择与集合S最近的一 ...
- 【BZOJ1016】【Luogu P4208】 [JSOI2008]最小生成树计数 最小生成树,矩阵树定理
蛮不错的一道题,遗憾就遗憾在数据范围会导致暴力轻松跑过. 最小生成树的两个性质: 不同的最小生成树,相同权值使用的边数一定相同. 不同的最小生成树,将其都去掉同一个权值的所有边,其连通性一致. 这样我 ...
- Educational Codeforces Round 9 F. Magic Matrix 最小生成树
F. Magic Matrix 题目连接: http://www.codeforces.com/contest/632/problem/F Description You're given a mat ...
- [vijos1234]口袋的天空最小生成树
题目链接:https://vijos.org/p/1234 白天刚刚写完prim的算法,晚上就心血来潮的打了一道最小生成树的题 虽然有题解说可以用prim做,但是这道题明显是加最小的边,感觉krusk ...
- Luogu P2619 [国家集训队2]Tree I(WQS二分+最小生成树)
P2619 [国家集训队2]Tree I 题意 题目描述 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有\(need\)条白色边的生成树. 题目保证有解. 输入输出格式 输入格式 ...
- LA 5717枚举+最小生成树回路性质
1 /*LA 5717 2 <训练指南>P343 3 最小生成树的回路性质 4 在生成的最小生成树上,新增一条边e(u,v) 5 若原图上u到v的路径的最大边大于e,则删除此边,加上e,否 ...
最新文章
- 气氛拉满!高校补办2020届毕业典礼,这些专属礼物太戳心......
- 程序员必备基础:如何安全传输存储用户密码?
- CCS如何恢复到默认界面?
- Visual Studio 2010 多定向的支持
- UML建模之时序图(Sequence Diagram)
- 学习笔记Hive(五) —— Hive应用(3)—— Hive查询
- oracle供需平衡,OracleR12_MRP_功能介绍_V2.ppt
- mysql5.7+proxy_mysql5.7使用ProxySQL实现读写分离
- 在线普通话转粤语发音_香港最新悬疑侦探剧福尔摩师奶,粤语知识好难
- 微软任命LinkedIn高级副总裁为首席技术官
- 【系统设计】统一过程的类抽取
- 5.0在python中是一个整数常量_python学习之路,基础篇-变量和常量
- 如何抓取html请求,网页抓取工具如何进行http模拟请求
- Spring原理机制
- 主力吸筹猛攻指标源码_成功率90%以上【主力吸筹+买点提示+使用方法】通达信指标公式源码...
- 什么是收集服务器配置信息,配置rsyslog服务器收集Cisco交换机日志信息操作指引...
- 印度it公司_2016年印度十大IT公司
- Parity Bit 奇偶校验
- 前端踩坑日记 npm install -g ...
- 本地html文件显示不全,网页显示不全,详细教您网页显示不全怎么办