C++ P0003 服务点设置
2016-12-09 16:42
134 查看
题目:P0003 服务点设置
floyd最短路,用一个它本身的性质:所有点中的某个点,与它之外的点的最短路一并计算。
再看数据范围,小的可怜,所有直接O(n^3)的floyd。
floyd最短路,用一个它本身的性质:所有点中的某个点,与它之外的点的最短路一并计算。
再看数据范围,小的可怜,所有直接O(n^3)的floyd。
# include <iostream> # include <cstdio> using namespace std; const int maxn = 0x7fffffff/3; int map[110][110], n, m, u, v, t, minx = maxn, mins, cost; int main() { // freopen("djsa.in", "r", stdin); // freopen("djsa.out", "w", stdout); cin >> n >> m; for(int i = 0; i < n; i++) // 初始化无穷大 for(int j = 0; j < n; j++) map[i][j] = maxn; for(int i = 1; i <= m; i++) { cin >> u >> v >> t; map[u][v] = map[v][u] = t; // 双向边 } for(int i = 0; i < n; i++) // Floyd for(int j = 0; j < n; j++) for(int z = 0; z < n; z++) map[j][z] = min(map[j][z], map[j][i] + map[i][z]); for(int i = 0; i < n; i++){ mins = 0; // i点到它其它点最短路中最大的边权 for(int j = 0; j < n; j++) if(j != i) mins = max(mins, map[i][j]); // 更新mins // minx 图中最短路最小边权 if(minx > mins) { // 如果有mins会更小,那么记录下来,在更新minx cost = i; minx = mins; } } cout << cost; return 0; }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- C#递归算法之分而治之策略
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- C#算法之大牛生小牛的问题高效解决方法
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C#算法函数:获取一个字符串中的最大长度的数字
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C++联合体转换成C#结构的实现方法