DS实验题 Floyd最短路径 Prim最小生成树
题目:
提示:
Floyd最短路径算法实现(未测试):
//
// main.cpp
// Alg_Floyd_playgame
//
// Created by wasdns on 16/11/19.
// Copyright ? 2016年 wasdns. All rights reserved.
// #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <string>
#include <string.h>
using namespace std; #define endless 1000000001; int Floydgh[5005][5005]; void Inigh(int n)
{ for (int i = 1; i <= n; i++) { Floydgh[i][i] = 0; for (int j = 1; j <= n; j++) { if (i != j) { Floydgh[i][j] = endless; } } }
} void Creatgh(int n, int m)
{ Inigh(n); int i, u, v, w; for (i = 1; i <= m; i++) { cin >> u >> v >> w; Floydgh[u][v] = w; Floydgh[v][u] = w; }
} void Alg_Floyd(int n)
{ int i, j, k; for (k = 1; k <= n; k++) { for (i = 1; i <= n; i++) { for (j = 1; j <= n; j++) { int t = Floydgh[i][k] + Floydgh[k][j]; if (t < Floydgh[i][j]) { Floydgh[i][j] = t; Floydgh[j][i] = t; } } } }
} int minjudge(int n)
{ int i, j; int minlen = endless; for (i = 1; i <= n; i++) { int cnt = 0; for (j = 1; j <= n; j++) { cnt += Floydgh[i][j]; } if (cnt < minlen) { minlen = cnt; } } return minlen;
} int main()
{ int n, m; cin >> n >> m; Creatgh(n, m); Alg_Floyd(n); cout << minjudge(n) << endl; return 0;
}
Prim生成树算法实现:
关于Prim算法,请参考我的另外一篇博客:hdoj-1233-还是畅通工程
//
// main.cpp
// Prim
//
// Created by wasdns on 16/11/24.
// Copyright © 2016年 wasdns. All rights reserved.
//#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <string>
#include <string.h>
#define maxn 10000005;
using namespace std;int Primgh[10000][10000];bool refer[10005];void Initial(int n, int m)
{int i, j;for (i = 1; i <= n; i++){refer[i] = false;for (j = 1; j <= n; j++){if (i == j) {Primgh[i][j] = 0;}else Primgh[i][j] = maxn;}}int u, v, w;for (i = 1; i <= m; i++){cin >> u >> v >> w;Primgh[u][v] = w;Primgh[v][u] = w;}
}int Prim_Alg(int n, int m)
{Initial(n, m);int i, j, k;int ans = 0;refer[1] = true; //起点为1for (i = 1; i <= n-1; i++){int minlen = maxn;int rcd = 1;for (j = 1; j <= n; j++){if (!refer[j]) continue;int len1 = maxn;int rcd1 = 1;for (k = 1; k <= n; k++){if (!refer[k]){if (Primgh[j][k] < len1) {len1 = Primgh[j][k];rcd1 = k;}}}if (len1 < minlen) {minlen = len1;rcd = rcd1;}}//char check = 'A'+rcd-1;//cout << "rcd: " << check << endl;//cout << "minlen: " << minlen << endl;refer[rcd] = true;rcd = 1;ans += minlen;}return ans;
}int main()
{int n, m;cin >> n >> m;cout << Prim_Alg(n, m) << endl;return 0;
}
测试样例:
/*eg1. Input:4 61 2 12 3 21 3 32 4 33 4 51 4 4Output:6eg2.Input:7 111 2 71 4 52 4 92 3 82 5 73 5 54 5 154 6 65 6 85 7 96 7 11Output:39*/
2016/11/24
DS实验题 Floyd最短路径 Prim最小生成树相关推荐
- DS实验题 融合软泥怪-2 Heap实现
题目和STL实现:DS实验题 融合软泥怪-1 用堆实现优先队列 引言和堆的介绍摘自:Priority Queue(Heaps)--优先队列(堆) 引言: 优先队列是一个至少能够提供插入(Insert) ...
- DS实验题 Inversion
题目: 解题过程: 第一次做这题的时候,很自然的想到了冒泡和选择,我交的代码是用选择写的.基本全WA(摊手). 贴上第一次的代码: // // main.cpp // sequenceschange ...
- DS实验题 击鼓传花
题目: 代码1(数组实现): // // main.cpp // DS-击鼓传花 // // Created by wasdns on 16/11/9. // Copyright © 2016年 wa ...
- DS实验题 融合软泥怪-1
题目 思路 很容易想到第一种做法,用Huffman算法,从森林中找出两个值最小的节点,合并再加入森林,在这个过程中不断记录. 但是每一次需要sort一遍,将最小的两个值节点置于头两个节点,最坏情况下复 ...
- 离散实验一 油管铺设 (求最小生成树的Prim算法的实际应用)
实验一 油管铺设 2018.11.06于CSDN释放 详见GitHub: https://github.com/DolorHunter/PrimAlgorithm 实验准备 最小生成树问题,求最小生成 ...
- dijkstra算法_Python实现图的经典DFS、BFS、Dijkstra、Floyd、Prim、Kruskal算法
讲在前面的话,图的算法太多,理论知识肯定一篇文章讲不完,关于理论知识大家可以参考教材Sedgewick的<算法>或reference的链接,本文主要还是想在一篇文章中记录六种算法的Pyth ...
- dfs时间复杂度_Python实现图的经典DFS、BFS、Dijkstra、Floyd、Prim、Kruskal算法
讲在前面的话,图的算法太多,理论知识肯定一篇文章讲不完,关于理论知识大家可以参考教材Sedgewick的<算法>或reference的链接,本文主要还是想在一篇文章中记录六种算法的Pyth ...
- 数据结构实验之图论九:最小生成树
数据结构实验之图论九:最小生成树 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 有n个城市,其中有些城市之间可以修建公 ...
- 算法与数据结构实验题 10.23 寡人的难题
算法与数据结构实验题 10.23 寡人的难题 ★实验任务 寡人心系天下为国为民,想要在历史中留下点痕迹,就必须要让国家强盛起来,正所谓想致富先修路,寡人觉得去修路,那些吃干饭的大臣给了寡人很多条要修的 ...
最新文章
- 面试离职理由_面试一个月都没有成功,是种什么样的神奇体验?
- 视频容器格式与编码格式简介
- Linux资料分享,强势来袭!
- html5 手机拍视频滤镜,用canvas实现图片滤镜效果附演示_html5教程技巧
- linux下无权限安装ffmpeg-4.1.3
- 小程序 switch 自定义_微信小程序自定义组件问题一:获取组件DOM元素
- Smart 3D 切块合并 使用S3C索引 excel表格法
- 程序员离职后跳槽到国企,每天主动加班到10点,结果试用期没过?
- 从零开发短视频电商 隐藏业务ID以及缩短业务链接
- Latex——数学符号大全
- VUE 中 keep-alive 的 --是什么-- 使用场景-- 作用-- 新增属性--动态组件--理解
- python-pandapower电力系统短路电流计算(算例3:探索一天的最佳电网运行方式))
- Android 安全防护
- 从事IT业一个8年老兵转行前的自我总结2——从《易经》说开来
- linux遇到nul字符,linux TXT文件操作 '^@ ' 'NUL' 符号乱码问题
- Node【初识Node】
- Linux系统如何安装Python?新手教程
- 大学毕业小总结以及感想
- HDU 1208(Pascal's Travels)
- O - 鸣人和佐助(BFS)
热门文章
- 【周末阅读】5G时代新型基础设施建设白皮书
- 中国信通院《新型智慧城市发展研究报告》
- 新一轮全球“太空竞赛”正上演 争夺几万亿美元大蛋糕
- AI手机报告 | 揭秘手机行业未来AI之路
- 杂谈 | 微软复兴,它与苹果竟有这么多相似之处!
- Gartner重磅发布近40页PPT,详解2017年十大战略技术趋势
- 我拍了拍 Redis,没想到被移出了群聊......
- 初级程序员常犯错误一览
- 使用 ftrace 调试 Linux 内核【转】
- cocos2d JS 自定义事件分发器(接收与传递数据) eventManager