uva 10048 Audiophobia(floyd)
2015-08-23 16:59
423 查看
原题链接:
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=989
题目大意:
c个结点,s条关系,q个问题。
确定任意两个结点所有路径之中,每条路径所有边中最大权值 小于 其他路径所有边中中最大权值。
求该最大权值。若两点之间无路径,则输出“no path”。
G[u][v]=min( G[u][v] , max( G[u][k] , G[k][v] ) );
详见代码:
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=989
题目大意:
c个结点,s条关系,q个问题。
确定任意两个结点所有路径之中,每条路径所有边中最大权值 小于 其他路径所有边中中最大权值。
求该最大权值。若两点之间无路径,则输出“no path”。
G[u][v]=min( G[u][v] , max( G[u][k] , G[k][v] ) );
详见代码:
#include<iostream> #include<string> #include<cstring> #include<algorithm> using namespace std; const int N = 100 + 10; const int maxfb = 100000;//自定义的权值 int G ; int main() { int n, m, q,kase=1; while (cin >> n >> m >> q) { if (!n&&!m&&!q) break; for (int i = 1; i <= n; i++)//初始化 for (int j = 1; j <= n; j++) if (i == j)G[i][j] = 0; else G[i][j] = maxfb; int u, v, w; for (int i = 1; i <= m; i++) { cin >> u >> v >> w; G[u][v] = w; G[v][u] = w; } for (int k = 1; k <= n; k++) for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) G[i][j] = min(G[i][j], max(G[i][k], G[k][j])); if (kase > 1)cout << endl; //不同测数据之间 空行 cout << "Case #" << kase++ << endl; for (int i = 1; i <= q; i++) { cin >> u >> v; if (G[u][v] != maxfb) cout << G[u][v] << endl; else cout << "no path" << endl; //若G[u][v]==maxfb 说明两点之间不存在路径 } } return 0; }
相关文章推荐
- Linux系统下运用开源RXTX库实现JAVA串口通讯
- shell 的几个数据处理命令 管道命令
- Linux中点命令
- 虚拟机与docker
- 2.4-Apache访问控制
- Tomcat 6.0_39安装
- 配置hadoop伪分布式继续
- chown命令 - linux
- Lucene实践:Lucene总体设计架构
- Nginx 笔记与总结(16)nginx 负载均衡
- 读书笔记之linux/unix系统编程手册(20)
- apache mina串口程序
- 1、hadoop配置伪分布式
- 网站
- Linux注销在线用户
- Linux注销在线用户
- FAST特征点检测
- linux指令中 tar的使用说明
- Tomcat体系结构
- Linux 命令