codevs——1003 电话连线

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 黄金 Gold

题解

题目描述 Description

一个国家有n个城市。若干个城市之间有电话线连接,现在要增加m条电话线(电话线当然是双向的了),使得任意两个城市之间都直接或间接经过其他城市有电话线连接,你的程序应该能够找出最小费用及其一种连接方案。

输入描述 Input Description

输入文件的第一行是n的值(n<=100).

第二行至第n+1行是一个n*n的矩阵,第i行第j列的数如果为0表示城市i与城市j有电话线连接,否则为这两个城市之间的连接费用(范围不超过10000)。

输出描述 Output Description

输出文件的第一行为你连接的电话线总数m,第二行至第m+1行为你连接的每条电话线,格式为i j,(i<j), i j是电话线连接的两个城市。输出请按照Prim算法发现每一条边的顺序输出,起始点为1.

第m+2行是连接这些电话线的总费用。

样例输入 Sample Input

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

样例输出 Sample Output

2

1 4

2 5

17

数据范围及提示 Data Size & Hint

n<=100

分类标签 Tags 点此展开

最小生成树 图论
看到这个踢得我很激动,一想又是个最小生成树的板子,然而我弄了2个小时,一直全w,后来我就比着题解看了看,交上题解后发现了题解的k算法也全w了。然后我就去找老徐额,后才看到这个提上明了地写着要用p做!!
代码:
#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

电话连线(最小生成树)相关推荐

  1. CodeVS 1003 电话连线

    CodeVS 1003  电话连线                                    By MPS                542479042@qq.com -------- ...

  2. 数据结构与算法(7-3)最小生成树(普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法)

    目录 一.最小生成树简介 二.普里姆算法(Prim) 1.原理 2.存储 2-1.图顶点和权: 2-3. 最小生成树: 3.Prim()函数 3-1.新顶点入树 3-2.保留最小权 3-3. 找到最小 ...

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

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

  4. 图的算法专题——最小生成树

    概要: Prim算法 Kruskal算法 1.Prim算法 算法流程: (1)对图G(V,E)设置集合S来存放已被并入的顶点,然后执行n次(2)(3) (2)每次从未并入顶点集合中选择与集合S最近的一 ...

  5. 【BZOJ1016】【Luogu P4208】 [JSOI2008]最小生成树计数 最小生成树,矩阵树定理

    蛮不错的一道题,遗憾就遗憾在数据范围会导致暴力轻松跑过. 最小生成树的两个性质: 不同的最小生成树,相同权值使用的边数一定相同. 不同的最小生成树,将其都去掉同一个权值的所有边,其连通性一致. 这样我 ...

  6. Educational Codeforces Round 9 F. Magic Matrix 最小生成树

    F. Magic Matrix 题目连接: http://www.codeforces.com/contest/632/problem/F Description You're given a mat ...

  7. [vijos1234]口袋的天空最小生成树

    题目链接:https://vijos.org/p/1234 白天刚刚写完prim的算法,晚上就心血来潮的打了一道最小生成树的题 虽然有题解说可以用prim做,但是这道题明显是加最小的边,感觉krusk ...

  8. Luogu P2619 [国家集训队2]Tree I(WQS二分+最小生成树)

    P2619 [国家集训队2]Tree I 题意 题目描述 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有\(need\)条白色边的生成树. 题目保证有解. 输入输出格式 输入格式 ...

  9. LA 5717枚举+最小生成树回路性质

    1 /*LA 5717 2 <训练指南>P343 3 最小生成树的回路性质 4 在生成的最小生成树上,新增一条边e(u,v) 5 若原图上u到v的路径的最大边大于e,则删除此边,加上e,否 ...

最新文章

  1. 气氛拉满!高校补办2020届毕业典礼,这些专属礼物太戳心......
  2. 程序员必备基础:如何安全传输存储用户密码?
  3. CCS如何恢复到默认界面?
  4. Visual Studio 2010 多定向的支持
  5. UML建模之时序图(Sequence Diagram)
  6. 学习笔记Hive(五) —— Hive应用(3)—— Hive查询
  7. oracle供需平衡,OracleR12_MRP_功能介绍_V2.ppt
  8. mysql5.7+proxy_mysql5.7使用ProxySQL实现读写分离
  9. 在线普通话转粤语发音_香港最新悬疑侦探剧福尔摩师奶,粤语知识好难
  10. 微软任命LinkedIn高级副总裁为首席技术官
  11. 【系统设计】统一过程的类抽取
  12. 5.0在python中是一个整数常量_python学习之路,基础篇-变量和常量
  13. 如何抓取html请求,网页抓取工具如何进行http模拟请求
  14. Spring原理机制
  15. 主力吸筹猛攻指标源码_成功率90%以上【主力吸筹+买点提示+使用方法】通达信指标公式源码...
  16. 什么是收集服务器配置信息,配置rsyslog服务器收集Cisco交换机日志信息操作指引...
  17. 印度it公司_2016年印度十大IT公司
  18. Parity Bit 奇偶校验
  19. 前端踩坑日记 npm install -g ...
  20. 本地html文件显示不全,网页显示不全,详细教您网页显示不全怎么办

热门文章

  1. 多点优化损失函数地图全局描述
  2. 深度学习仍是视觉大数据领域的最好分析方法之一
  3. 干货丨先搞懂这八大基础概念,再谈机器学习入门
  4. Tensorflow— 递归神经网络RNN
  5. 《数学之美》第4章 谈谈分词
  6. Nat. Commun.速递:合群者有着相似的大脑活动
  7. 行业观察 | 全球IoT云平台第一股诞生,IoT离爆发还有多远?
  8. 原创工作发表难之叶公好龙
  9. 任正非:华为5G芯片用在iPhone上?我持开放态度
  10. 微软宣布在机器翻译方面取得突破,中翻英可达人类水平