hdu 1217 Arbitrage (最小生成树)

简介:

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1217

复制代码
/************************************************************************/
/*     
        hdu  Arbitrage
        floyd求最短路径
        题目大意:floyd算法,求得两点之间最短距离,(u,v) = min( (u,v),(u,w)+(w,v) );
此题,是求其能够赚钱,即最大生成树,且过程是相乘的,公式:( u, v) = max( (u,v), (u,w)*(w,v) );
*/ /************************************************************************/ #include <cstdio> #include <cstring> #include <string> #include <map> #include <algorithm> #include <cmath> using namespace std; #define MIN(a,b) a<b?a:b #define MAX 0xfffffff const int N = 31; double maps[N][N]; int num,key; map<string,int> hash_map; void build_map() { char name[20],name1[20]; double rate; int m; for (int i = 1; i <= num; i++) { scanf("%s",name); hash_map[name] = i; } memset(maps,0,sizeof(maps)); scanf("%d",&m); for (int i = 0; i < m; i++) { scanf("%s%lf%s",name,&rate,name1); maps[hash_map[name]][hash_map[name1]] = rate; } } void fload() { for (int k = 1; k <= num; k++) { for (int i = 1; i <= num; i++) for (int j = 1; j <= num; j++) maps[i][j] = max(maps[i][j],maps[i][k] * maps[k][j]); } int j; for (j = 1; j <= num; j++) if (maps[j][j] > 1)break; if (j>num)printf("Case %d: No\n",key); else printf("Case %d: Yes\n",key); hash_map.clear(); } int main() { key = 0; while(scanf("%d",&num) && num != 0 ) { key++; build_map(); fload(); } return 0; }
复制代码

 









本文转自NewPanderKing51CTO博客,原文链接:http://www.cnblogs.com/newpanderking/p/3255194.html ,如需转载请自行联系原作者

相关文章
|
6月前
最短路径问题(HDU3790)
最短路径问题(HDU3790)
UVa11710 - Expensive subway(最小生成树)
UVa11710 - Expensive subway(最小生成树)
42 0
HDU-1874,畅通工程续(Floyd最短路)
HDU-1874,畅通工程续(Floyd最短路)
POJ-2253,Frogger(最短路问题)
POJ-2253,Frogger(最短路问题)
|
并行计算 算法 Java
HDU 1874 畅通工程续【Floyd算法实现】
畅通工程续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 53806    Accepted Submission(s): 20092 Problem Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路。
1086 0
|
人工智能 机器学习/深度学习 算法
【HDU 4463 Outlets】最小生成树(prim,kruscal都可)
以(x,y)坐标的形式给出n个点,修建若干条路使得所有点连通(其中有两个给出的特殊点必须相邻),求所有路的总长度的最小值。 因对所修的路的形状没有限制,所以可看成带权无向完全图,边权值为两点间距离。因是稠密图,故用邻接矩阵存储更好(完全图,边数e达到n(n-1)/2)。
1004 0