本文主要是介绍POJ 2240 Arbitrage G++ floyd需复习 bellman_flod未实现 spfa未实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#include <iostream>
#include <map>
#include <string>
#include <cstring>
using namespace std;
//看博友分析 floyd实现 bellman_flod未实现 spfa未实现
map<string,int> mp;
double da[40][40];
int main()
{int tag=0;while(1){tag++;mp.clear();int n;cin>>n;if(n==0){break;}for(int i=0;i<n;i++) {string s;cin>>s;mp[s]=i+1;}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i==j){da[i][j]=1;}else{da[i][j]=-1;}}}int m;cin>>m;for(int i=0;i<m;i++){string sa,sb;double zhi;cin>>sa>>zhi>>sb;int a=mp[sa];int b=mp[sb];da[a][b]=zhi;} for(int k=1;k<=n;k++){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(da[i][k]!=-1 && da[k][j]!=-1){if(da[i][j]==-1||da[i][j]<da[i][k]*da[k][j]){da[i][j]=da[i][k]*da[k][j];}}}}}/*for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cout<<da[i][j]<<" ";}cout<<endl;}*/ cout<<"Case "<<tag<<": ";if(da[1][1]>1){cout<<"Yes"<<endl;}else{cout<<"No"<<endl;}} return 0;
}
这篇关于POJ 2240 Arbitrage G++ floyd需复习 bellman_flod未实现 spfa未实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!