poj 2240 Arbitrage (floyd 变形)
生活随笔
收集整理的這篇文章主要介紹了
poj 2240 Arbitrage (floyd 变形)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http://poj.org/problem?id=2240 floyd 的變形 題意 有n個貨幣,他們的交換情況m個
例如:
3
USDollar
BritishPound
FrenchFranc
3
USDollar 0.5 BritishPound
BritishPound 10.0 FrenchFranc
FrenchFranc 0.21 USDollar求出 是否存個一個增長的貨幣回路#include<iostream>
#include<string>
#include<string.h>
#include<stdio.h>
const double eps=1e-8;
#define max 999999
const int N=1000;
using namespace std;
int n,m;
double dis[N],map[N][N];
int vis[N];
string name[N];
int search(string a)
{int i;for(i=0;i<n;i++){if(name[i]==a)return i;}
}
void floyd()
{int i,j,k;for(i=0;i<n;i++){for(j=0;j<n;j++){for(k=0;k<n;k++){double t=map[j][i]*map[i][k];if(map[j][k]<t)map[j][k]=t;}}}
}
int main()
{int l=0,i;while(cin>>n){if(n==0)break;l++;for(i=0;i<n;i++){cin>>name[i];}cin>>m;string a,b;memset(map,0,sizeof(map));double w;while(m--){cin>>a>>w>>b;int x=search(a);int y=search(b);map[x][y]=w;}floyd();int ans=0;for(i=0;i<n;i++){if(map[i][i]>1.0){ans=1;break;}}if(ans)printf("Case %d: Yes\n",l);else printf("Case %d: No\n",l);}}
轉載于:https://www.cnblogs.com/acSzz/archive/2012/03/03/2378358.html
總結
以上是生活随笔為你收集整理的poj 2240 Arbitrage (floyd 变形)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET MVC 3 Razor基
- 下一篇: SQL练习行转列