Arbitrage(0699)
来源:互联网 发布:甲骨文和java的关系 编辑:程序博客网 时间:2024/06/05 04:41
Arbitrage(0699)
ployd算法——计算完全最短路径算法
#include <iostream>#include <string>using namespace std;#define max(a, b) a > b ? a : bstruct Graph{ int n; double **edge; string *v; int *flag; Graph(int _n) :n(_n) { edge = new double*[n]; for (int i = 0; i < n; i++) edge[i] = new double[n](); v = new string[n]; flag = new int[n](); } void dispose() { for (int i = 0; i < n; i++) { delete[] edge[i]; } delete[] edge; delete[] v; delete[] flag; } int findVertexByString(string e) { for (int i = 0; i < n; i++) if (e == v[i]) return i; return -1; }};void floyd(Graph &g){ for (int k = 0; k < g.n; k++) { for (int i = 0; i < g.n; i++) { for (int j = 0; j < g.n; j++) { g.edge[i][j] = max(g.edge[i][j], g.edge[i][k] * g.edge[k][j]); } } }}bool judge(Graph g){ for (int i = 0; i < g.n; i++) { if (g.edge[i][i] > 1) return false; } return true;}int main(){ int n, m, cnt = 0; while (cin >> n) { if (n == 0) return 0; Graph g(n); for (int i = 0; i < g.n; i++) cin >> g.v[i]; cin >> m; string v1, v2; double e; for (int i = 0; i < m; i++) { cin >> v1 >> e >> v2; g.edge[g.findVertexByString(v1)][g.findVertexByString(v2)] = e; } floyd(g); if (judge(g)) cout << "Case " << ++cnt << " No" << endl; else cout << "Case " << ++cnt << " Yes" << endl; g.dispose(); } return 0;}
阅读全文
0 0
- Arbitrage(0699)
- Arbitrage
- Arbitrage
- Arbitrage
- Arbitrage
- Arbitrage
- Arbitrage
- Arbitrage
- Arbitrage
- Arbitrage
- zoj1092 Arbitrage
- 104 - Arbitrage
- pku2240 Arbitrage
- ZOJ1092 Arbitrage
- POJ2240:Arbitrage
- G - Arbitrage
- Floyd: Arbitrage
- poj2240 Arbitrage
- 下个五年
- Solr--企业级搜索应用服务器
- OpenGL入门
- 基础4
- 实验1-ADS1.2的使用
- Arbitrage(0699)
- table动态添加、删除tr
- 2017计蒜之道初赛第一场
- java爬虫的坑
- 基于水色图像的水质评价
- C++抽象编程——内存模式(2)——函数调用机制
- 算法导论 钢条切割问题
- Spring 源码粘贴9 MVC
- 在github上搭建个人网站