标签:style class blog code http tar
题目链接:Arbitrage
让这题坑了,精度损失的厉害,用赋值的话,直接全部变成0.00了,无奈下,我只好往里输了,和POJ1860一样找正环,代码也差不多,稍微改改就可以了,但是这个题精度损失的比那个。。。。水过
POJ计划的最短路模块,刷完了,最短路问题,挺坑的,但是就是那点东西,变来变去,就是改改dis[]的更新条件。
明天就要开始POJ的最小生成树了,
ME TI
704Kb 46Ms
#include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; const int N = 50; const int M = 1010; char a[N][N],s[N]; double dis[N]; int n,m,num; struct node{ int u,v; double w; }edge[M]; int Bellman(int x) { dis[x] = 1.0;//开始时漏了,结果都打NO for(int i = 0;i <n;i++) { for(int j = 0;j < num; j++) { if(dis[edge[j].v] < dis[edge[j].u] * edge[j].w) dis[edge[j].v] = dis[edge[j].u] * edge[j].w; } } for(int i = 0;i<num;i++) { if(dis[edge[i].v] < dis[edge[i].u]*edge[i].w) return 1; } return 0; } int main() { int c; c = 0; while(scanf("%d",&n),n) { c++; for(int i = 0;i <n;i++) dis[i] = 0; for(int i = 0;i <n;i ++) scanf("%s",a[i]); scanf("%d",&m); num = 0; while(m--) { scanf("%s",s); for(int i = 0;i <n;i++) { if(strcmp(s,a[i])== 0) { edge[num].u = i; break; } } scanf("%lf",&edge[num].w); scanf("%s",s); for(int i = 0;i <n;i++) { if(strcmp(s,a[i]) == 0) { edge[num++].v = i; break; } } } int st; for(int i = 0;i<n;i++)//挨个枚举,找正环 { st = Bellman(i); if(st) break; } printf("Case %d: ",c); if(st) puts("Yes"); else puts("No"); } return 0; }
POJ-2240 -Arbitrage(Bellman),布布扣,bubuko.com
标签:style class blog code http tar
原文地址:http://blog.csdn.net/wjw0130/article/details/30783557