#include<stdio.h>

#include<string.h>

#include<queue>//只需判断是否有正环路径就可以了

using namespace std;

#define N  200

struct node {

double r,c;

}map[N][N];

double maxvalue[N],h;

int n,cou[N];

int  bellmanford(int start) {

  queue<int>q;

  int vis[N];

   int cur,i,count=0;

   memset(vis,0,sizeof(vis));

   cou[start]=1;

   vis[start]=1;

   q.push(start);

   while(!q.empty()) {

    cur=q.front();

q.pop();

for(i=1;i<=n;i++) {

if(cur==i)

continue;

if(map[cur][i].c<0||map[cur][i].r<0)

continue;

if(maxvalue[i]<(maxvalue[cur]-map[cur][i].c)*map[cur][i].r&&(maxvalue[cur]-map[cur][i].c)*map[cur][i].r>=0) {

maxvalue[i]=(maxvalue[cur]-map[cur][i].c)*map[cur][i].r;

if(!vis[i]) {

vis[i]=1;

q.push(i);

if(++cou[i]>=n)//如果入队达到n次就说明肯定有正环路径

return 1;

}

}

}

vis[cur]=0;

   }

   return 0;

}

int main() {

int m,i,num,a,b,j;

double ab,abc,ba,bac;

while(scanf("%d%d%d%lf",&n,&m,&num,&h)!=EOF) {

for(i=1;i<=n;i++)

for(j=1;j<=n;j++) {

map[i][j].r=-1;

map[i][j].c=-1;

}

for(i=1;i<=n;i++)

maxvalue[i]=0;

 maxvalue[num]=h;

 for(i=1;i<=m;i++) {

 scanf("%d%d%lf%lf%lf%lf",&a,&b,&ab,&abc,&ba,&bac);

 map[a][b].r=ab;

 map[a][b].c=abc;

 map[b][a].r=ba;

 map[b][a].c=bac;

 }

       if(bellmanford(num))

  printf("YES\n");

  else

  printf("NO\n");

}

return 0;

}

poj 1860 bellman 求正环的更多相关文章

  1. poj 1860 (Bellman_Ford判断正环)

    题意:给出n种货币,m中交换关系,给出两种货币汇率和手续费,求能不能通过货币间的兑换使财富增加. 用Bellman_Ford 求出是否有正环,如果有的话就可以无限水松弛,财富可以无限增加. #incl ...

  2. POJ - 1860 Bellman-Ford判正环

    心累,陕西邀请赛学校不支持,可能要自费了.. 思路:套用Bellman-Ford判断负环的思路,把大于改成小于即可判定是否存在从源点能到达的正环.如果存在正环,那么完全多跑几次正环就可以把钱增加到足够 ...

  3. Currency Exchange POJ - 1860 spfa判断正环

    //spfa 判断正环 #include<iostream> #include<queue> #include<cstring> using namespace s ...

  4. POJ1860 Currency Exchange —— spfa求正环

    题目链接:http://poj.org/problem?id=1860 Currency Exchange Time Limit: 1000MS   Memory Limit: 30000K Tota ...

  5. poj1860 兑换货币(bellman ford判断正环)

    传送门:点击打开链接 题目大意:一个城市有n种货币,m个货币交换点,你有v的钱,每个交换点只能交换两种货币,(A换B或者B换A),每一次交换都有独特的汇率和手续费,问你存不存在一种换法使原来的钱更多. ...

  6. POJ 1860 Currency Exchange (最短路)

    Currency Exchange Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 60000/30000K (Java/Other) T ...

  7. 最优比例生成环(dfs判正环或spfa判负环)

    http://poj.org/problem?id=3621 Sightseeing Cows Time Limit: 1000MS   Memory Limit: 65536K Total Subm ...

  8. HDU 1317 XYZZY【Bellman_Ford判断正环】

    题意:给出n个房间,初始在房间1有100的能量值,每次进入一个房间,能量值可能增加也可能减小,(是点权,不是边权),问能否到达终点的时候能量值还为正 这题自己写的时候wa--wa-- 后来看了题解,还 ...

  9. poj1860 Currency Exchange(spfa判断正环)

    Description Several currency exchange points are working in our city. Let us suppose that each point ...

随机推荐

  1. 使用centos 5.x 64位系统安装astgo 2014 v7.3教程(含全套安装文件)

    版本特色: 全自动安装 安装过程中不用频繁输入yes或回车 自带完整号码归属地数据库 自带触屏版WAP ·首先确定你需要使用astgo 2014 7.0还是7.3: astgo 2014 v 7.0 ...

  2. astgo 老版本免激活完整安装包带安装命令脚本

    astgo是个国产的老牌经典软交换服务器,主要用来当回拨网络电话服务端,同时也具备群呼.传真等功能! 这个需要安装在centos 5.x 32位系统.带安装脚本,上传到root目录后执行安装脚本即可等 ...

  3. 网络简要<入门篇>

    OSI七层 网络的含义:两个不在同一地理位置的主机(终端),通过传输介质和通信协议,实现通信和资源共享. 网络四要素:终端,传输介质 ,通信协议,资源 网络分类: 以范围分类:LAN网(局域网,以太网 ...

  4. Ajax实现文件的上传

    Ajax实现文件的上传 准备 ajax的参数补充 type不写的话默认是GET dataType和ContentType: dataType: 浏览器发给服务器希望返回的数据类型 .. 如果明确地指定 ...

  5. Java内存泄漏及对象引用的4种类型

    转自: http://www.cnblogs.com/qq78292959/archive/2011/07/25/2116123.html 总结: 引用分类: 强引用,弱引用,软引用,虚引用.虚引用必 ...

  6. mysql数据的操作

    一.插入数据记录 1.插入完整数据记录 INSERT INTO table_name VALUES(value1,value2......valuen); 2.插入数据记录的一部分 INSERT IN ...

  7. webHttpBinding+wsHttpBinding+basicHttpBinding的区别 (转)

    1. webHttpBinding (web AJAX/JSON)2. wsHttpBinding (ASP.NET client) 3. basicHttpBinding (Silverlight) ...

  8. [转]通过Net Manager 配置Oracle 11g本地监听服务(listener service)

    本文转自:http://blog.csdn.net/mozart_cai/article/details/8596504 [Target] 通过ip address 监听orcl服务,而不是通过loc ...

  9. 研磨JavaScript系列

    JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言.同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作.它最初由网景公司 ...

  10. Android 自己搭建一个直播系统吧

    服务端用 SRS(Simple Rtmp Server),在这里下载simple-rtmp-server需要Linux系统最好是Ubuntu,装个Ubuntu虚拟机就行了在Linux里,解压缩SRS ...