zoukankan      html  css  js  c++  java
  • POJ-2240 Arbitrage

    链接:http://poj.org/problem?id=2240

    题意:给n个货币,给定m对货币间的汇率,问是否存在一种货币,通过不停的兑换,最后使得自己的钱变多

    思路:边权为汇率的有向图,在图中找到一个环,满足边权累乘大于1,floyd算法

    代码:

     1 #include<iostream>
     2 #include<string>
     3 #include<map>
     4 #include<cstdio>
     5 #include<cstring>
     6 #define inf 0x7ffffff
     7 #define ms(a) memset(a,0,sizeof(a))
     8 using namespace std;
     9 typedef long long ll;
    10 
    11 const int M = int(1e2)*5 + 5;
    12 const int mod = int(1e9) + 7;
    13 
    14 
    15 int n,m;
    16 
    17 double dis[M][M];
    18 void init(){
    19     for(int i=1;i<=n;i++){
    20         for(int j=1;j<=n;j++){
    21             if(i==j) dis[i][j]=1.0;
    22             else dis[i][j]=0;
    23         }
    24     }
    25 }
    26 
    27 void floyd(){
    28     for(int k=1;k<=n;k++){
    29         for(int i=1;i<=n;i++){
    30             for(int j=1;j<=n;j++){
    31                 dis[i][j]=max(dis[i][j],dis[i][k]*dis[k][j]);
    32             }
    33         }
    34     }
    35     
    36     
    37 }
    38 
    39 map<string,int> ma;
    40 int k=1;
    41 int main(){
    42     while(cin>>n && n){
    43         ms(dis);
    44         init();
    45         ma.clear();
    46         for(int i=1;i<=n;i++){
    47             string s;
    48             cin>>s;
    49             ma[s]=i;
    50         }
    51         cin>>m;
    52         for(int i=0;i<m;i++){
    53             string s,e;
    54             double w;
    55             cin>>s>>w>>e;
    56             dis[ma[s]][ma[e]]=w;
    57         }
    58         floyd();
    59         cout<<"Case "<<k<<": ";  
    60 
    61         int tot=0;
    62         for(int i=1;i<=n;i++){
    63             if(dis[i][i]>1) tot++;
    64         }
    65         if(tot==0) cout<<"No"<<endl;
    66         else cout<<"Yes"<<endl;
    67         k++;
    68     }
    69     return 0;
    70 }
  • 相关阅读:
    httpclient用法
    JS逻辑运算符&&与||的妙用
    jackson详解
    MVC +EF+linq 多表联查
    Log4net 集成到MVC+EF框架
    Asp.net中的页面跳转及post数据
    字符串的分割操作
    线程的信号机制
    事件的标准模式
    Java网络编程
  • 原文地址:https://www.cnblogs.com/harutomimori/p/12770585.html
Copyright © 2011-2022 走看看