标签:des style http color os io strong for ar
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 15806 | Accepted: 6648 |
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
算法思想:从源点逐次途经其他顶点,以缩短到达终点的最短路径长度。限制:图中不含权值总和为负值的回路。
#include"stdio.h"
#include"string.h"
#include"queue"
#include"iostream"
#include"algorithm"
using namespace std;
#define N 50
#define LL __int64
const int inf=0;
struct node
{
int u,v;
double d;
}e[N*N];
int m,n;
double dis[N];
bool bellman()
{
int i,j,u,v;
for(i=0;i<n;i++) //初始化为0
dis[i]=inf;
dis[0]=1;
for(i=1;i<=n;i++) //从dis[0]递推到dis[1]....dis[n];
{
for(j=0;j<m;j++)
{
u=e[j].u;
v=e[j].v;
if(dis[u]&&dis[v]<dis[u]*e[j].d) //若经过某一点能使从源点到该终点的最短路缩短,此为增大
dis[v]=dis[u]*e[j].d; //则修改该点值,即松弛
}
}
return dis[0]>1;
}
int main()
{
int i,j,k,cnt=1;
double d;
char str[N][N],a[N],b[N];
while(scanf("%d",&n),n)
{
for(i=0;i<n;i++)
scanf("%s",str[i]);
scanf("%d",&m);
for(i=0;i<m;i++)
{
scanf("%s %lf %s",a,&d,b);
for(j=0;strcmp(str[j],a);j++)
;
for(k=0;strcmp(str[k],b);k++)
;
e[i].u=j;
e[i].v=k;
e[i].d=d;
}
printf("Case %d: ",cnt++);
bool flag=bellman();
if(flag)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
poj 2240 Arbitrage(Bellman-Ford算法学习)
标签:des style http color os io strong for ar
原文地址:http://blog.csdn.net/u011721440/article/details/38759733