hdu 1217 Arbitrage Flyod

来源:互联网 发布:推荐算法 协同过滤2016 编辑:程序博客网 时间:2024/06/14 06:46

You should pay attention to the input is directed.

The portal :http://acm.hdu.edu.cn/showproblem.php?pid=1217

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <map>#include <algorithm>#include <iostream>#define eps 1e-8using namespace std;map<string,int>mp;double d[35][35];void Input(){    int n,t=1;    while(~scanf("%d",&n),n){        mp.clear();        char tempa[105];        string a,b ;        int k = 0;        for(int i=0;i<n;i++){            scanf("%s",tempa);            a = tempa;            mp[a] = k++;        }        int m;        scanf("%d",&m);        char tempb[105];        double tempr;        memset(d,0,sizeof(d));        for(int i=0;i<=30;i++){            d[i][i] = 1.0;        }        for(int i=0;i<m;i++){            scanf("%s %lf %s",tempa,&tempr,tempb);            a = tempa; b = tempb;            d[mp[a]][mp[b]] = tempr;//            d[mp[b]][mp[a]] = 1.0/tempr;        }        for(int k=0;k<n;k++){            for(int i=0;i<n;i++){                for(int j=0;j<n;j++){                    if(d[i][j]<d[i][k]*d[k][j])                        d[i][j] = d[i][k]*d[k][j];                }            }        }        int flag = 0;        for(int i=0;i<n;i++){            if(d[i][i]>1.0)flag = 1;        }        printf("Case %d: ",t++);        if(flag)            puts("Yes");        else            puts("No");    }}int main(void){//    freopen("a.in","r",stdin);    Input();    return 0;}



0 0
原创粉丝点击