PKU1860--Currency Exchange

来源:互联网 发布:淘宝直播运营公司 编辑:程序博客网 时间:2024/05/29 03:41

本题需要注意的是,起点不一定是从1开始,在初始化的时候也需注意。

#include <stdio.h>#include <iostream>#include <algorithm>#include <string.h>#include <math.h>#define Min(a,b) a<b?a:b#define Max(a,b) a<b?b:a#define M 105*5#define INF 999999999using namespace std;int n,m;int k,s;double dis[M];double v;struct Edge{int from,to;double R;double C;};struct Edge edge[M];bool Bellman_Ford(){int i,j;for(i=1;i<M;i++){dis[i]=0;}dis[s]=v;bool flag;for(i=1;i<n;i++){flag=false;for(j=1;j<=k;j++){if(dis[edge[j].to]<(dis[edge[j].from]-edge[j].C)*edge[j].R){dis[edge[j].to]=(dis[edge[j].from]-edge[j].C)*edge[j].R;flag=true;}}if(!flag)break;}for(j=1;j<=k;j++){if(dis[edge[j].to]<(dis[edge[j].from]-edge[j].C)*edge[j].R)return true;}return false;}int main(){int i;while(scanf("%d%d%d%lf",&n,&m,&s,&v)!=EOF){k=1;for(i=0;i<m;i++){int a,b;double Rab,Rba,Cab,Cba;scanf("%d%d%lf%lf%lf%lf",&a,&b,&Rab,&Cab,&Rba,&Cba);edge[k].from=a,edge[k].to=b,edge[k].R=Rab,edge[k++].C=Cab;edge[k].from=b,edge[k].to=a,edge[k].R=Rba,edge[k++].C=Cba;}if(Bellman_Ford())printf("YES\n");elseprintf("NO\n");}return 0;}


0 0
原创粉丝点击