标签:
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 16652 | Accepted: 7004 |
Description
Input
Output
Sample Input
3 USDollar BritishPound FrenchFranc 3 USDollar 0.5 BritishPound BritishPound 10.0 FrenchFranc FrenchFranc 0.21 USDollar 3 USDollar BritishPound FrenchFranc 6 USDollar 0.5 BritishPound USDollar 4.9 FrenchFranc BritishPound 10.0 FrenchFranc BritishPound 1.99 USDollar FrenchFranc 0.09 BritishPound FrenchFranc 0.19 USDollar 0
Sample Output
Case 1: Yes Case 2: No
Source
1 #include<stdio.h> 2 #include<string.h> 3 #include<iostream> 4 using namespace std; 5 const int M = 40 , inf = 0x3f3f3f3f; 6 struct Arbitrage 7 { 8 int u , v ; 9 double r ; 10 }e[M * M]; 11 int n , m ; 12 char cur[M][20] ; 13 char a[20] , b[20] ; 14 double d[M] ; 15 16 void init (char a[20] , char b[20] , int no) 17 { 18 for (int i = 1 ; i <= n ; i++) { 19 if (strcmp (cur[i] , a) == 0) 20 e[no].u = i ; 21 if (strcmp (cur[i] , b) == 0) 22 e[no].v = i ; 23 } 24 } 25 26 int bellman_ford (int o) 27 { 28 for (int i = 0 ; i <= n ; i++) 29 d[i] = 0 ; 30 d[o] = 1.0 ; 31 double temp = 1.0 ; 32 bool flag ; 33 for (int i = 1 ; i <= n ; i++) { 34 flag = 1 ; 35 for (int j = 0 ; j < m ; j++) { 36 if (d[e[j].v] < d[e[j].u] * e[j].r) { 37 d[e[j].v] = d[e[j].u] * e[j].r ; 38 flag = 0 ; 39 } 40 if (d[o] > temp) { 41 return true ; 42 } 43 } 44 } 45 return false ; 46 } 47 48 int main () 49 { 50 //freopen ("a.txt" , "r" , stdin) ; 51 int ans = 1 ; 52 while (~ scanf ("%d" , &n)) { 53 if (n == 0) 54 break ; 55 getchar () ; 56 for (int i = 1 ; i <= n ; i++) { 57 gets (cur[i]) ; 58 } 59 scanf ("%d" , &m) ; 60 for (int i = 0 ; i < m ; i++) { 61 cin >> a >> e[i].r >> b ; 62 init (a , b , i) ; 63 } 64 /* for (int i = 0 ; i < m ; i++) { 65 printf ("u = %d , v = %d , r = %.2f\n" , e[i].u , e[i].v , e[i].r) ; 66 }*/ 67 int i ; 68 for (i = 1 ; i <= n ; i++) { 69 if (bellman_ford (i)) { 70 printf ("Case %d: Yes\n" , ans++) ; 71 // printf ("Arbitrage num : %d\n" , i) ; 72 break ; 73 } 74 /*printf ("%d team: \n" , i) ; 75 for (int j = 1 ; j <= n ; j++) 76 printf ("%.2f " ,d[j]) ; 77 puts ("") ; */ 78 } 79 if (i == n + 1) 80 printf ("Case %d: No\n" , ans++) ; 81 } 82 return 0 ; 83 }
标签:
原文地址:http://www.cnblogs.com/get-an-AC-everyday/p/4311415.html