Currency Exchange---poj1860 ( spfa, 回路,最长路)
题目链接:http://poj.org/problem?id=1860
题解:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <stdlib.h>
#include <math.h>
#include <queue>
#include <algorithm>
using namespace std;
#define N 210
#define INF 0xfffffff
double dist[N], V;
int cnt, Head[N], num[N], vis[N];
int n, m, s; struct Edge
{
int v, next;
double r, c;
}e[N]; void Add(int u, int v, double r, double c)
{
e[cnt].v = v;
e[cnt].r = r;
e[cnt].c = c;
e[cnt].next = Head[u];
Head[u] = cnt++;
} bool spfa()///spfa模板;
{
memset(vis, , sizeof(vis));
memset(num, , sizeof(num));
queue<int>Q;
vis[s] = ;
dist[s] = V;
Q.push(s);
num[s]++;
while(Q.size())
{
int p=Q.front();
Q.pop();
vis[p] = ;
for(int i=Head[p]; i!=-; i=e[i].next)
{
int q = e[i].v;
if(dist[q] < (dist[p] - e[i].c) * e[i].r)///注意松弛的变化;
{
dist[q] = (dist[p] - e[i].c) * e[i].r;
if(!vis[q])
{
vis[q] = ;
Q.push(q);
num[q] ++;
if(num[q]>n)
return true;///存在正权回路;
}
}
} }
if(dist[s]>V)///最长路后,实现了增值;
return true;
return false;
} int main()
{
int a, b;
double rab, rba, cab, cba;
while(scanf("%d%d%d%lf", &n, &m, &s, &V)!=EOF)
{
cnt = ;
memset(Head, -, sizeof(Head));
memset(dist, , sizeof(dist));
for(int i=; i<=m; i++)
{
scanf("%d%d%lf%lf%lf%lf", &a, &b, &rab, &cab, &rba, &cba);
Add(a, b, rab, cab);
Add(b, a, rba, cba);
}
if( spfa() )
printf("YES\n");
else
printf("NO\n");
}
return ;
}
Currency Exchange---poj1860 ( spfa, 回路,最长路)的更多相关文章
- spfa求最长路
http://poj.org/problem?id=1932 spfa求最长路,判断dist[n] > 0,需要注意的是有正环存在,如果有环存在,那么就要判断这个环上的某一点是否能够到达n点,如 ...
- XYZZY(spfa求最长路)
http://acm.hdu.edu.cn/showproblem.php?pid=1317 XYZZY Time Limit: 2000/1000 MS (Java/Others) Memor ...
- POJ 3126 --Father Christmas flymouse【scc缩点构图 && SPFA求最长路】
Father Christmas flymouse Time Limit: 1000MS Memory Limit: 131072K Total Submissions: 3007 Accep ...
- BZOJ 2019 [Usaco2009 Nov]找工作:spfa【最长路】【判正环】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2019 题意: 奶牛们没钱了,正在找工作.农夫约翰知道后,希望奶牛们四处转转,碰碰运气. 而 ...
- POJ 3592--Instantaneous Transference【SCC缩点新建图 && SPFA求最长路 && 经典】
Instantaneous Transference Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 6177 Accep ...
- HDU - 6201 transaction transaction transaction(spfa求最长路)
题意:有n个点,n-1条边的无向图,已知每个点书的售价,以及在边上行走的路费,问任选两个点作为起点和终点,能获得的最大利益是多少. 分析: 1.从某个结点出发,首先需要在该结点a花费price[a]买 ...
- 洛谷 P3627 [APIO2009]抢掠计划 Tarjan缩点+Spfa求最长路
题目地址:https://www.luogu.com.cn/problem/P3627 第一次寒假训练的结测题,思路本身不难,但对于我这个码力蒟蒻来说实现难度不小-考试时肛了将近两个半小时才刚肛出来. ...
- POJ 1860 Currency Exchange【SPFA判环】
Several currency exchange points are working in our city. Let us suppose that each point specializes ...
- (简单) POJ 1860 Currency Exchange,SPFA判圈。
Description Several currency exchange points are working in our city. Let us suppose that each point ...
- POJ 1860: Currency Exchange 【SPFA】
套汇问题,从源点做SPFA,如果有一个点入队次数大于v次(v表示点的个数)则图中存在负权回路,能够套汇,如果不存在负权回路,则判断下源点到自身的最长路是否大于自身,使用SPFA时松弛操作需要做调整 # ...
随机推荐
- Json序列化问题
之前Json字符反序列化为C#对象时 总是写一个实体类.. 如:{"a":5,"b":10} 这种json字符串 对应的实体类为: public class R ...
- MVC下载(存在文件的情况)
前台: <h1>下载</h1> <button onclick="location = 'download'">下载</button> ...
- Linux 查找具体的文件名称
在大概知道文了件地址的情况下, 比如root@masterback:/# cd /usr/lib/jvm/ root@masterback:/usr/lib/jvm# ls 出来具体的文件名称
- FairyGUI和NGUI对比
一直在做Unity方面的游戏开发,经同事介绍了解到有这么一个GUI能提供跨平台的能力,有独立UI编辑器,而且功能强大,能够组合成复杂的UI界面,可以导出到Unity,Flash,Starling等,文 ...
- Storm-源码分析-Streaming Grouping (backtype.storm.daemon.executor)
executor在发送outbounding message的时候, 需要决定发送到next component的哪些tasks 这里就需要用到streaming grouping, 1. mk- ...
- 超全面的JavaWeb笔记day15<mysql数据库>
1.数据库的概述 2.SQL 3.DDL 4.DML 5.DCL 6.DQL MySQL 数据库 1 数据库概念(了解) 1.1 什么是数据库 数据库就是用来存储和管理数据的仓库! 数据库存储数据的优 ...
- Python tips: 什么是*args和**kwargs?
推荐查看:https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00137473844 ...
- iteritems()
iteritems() 是列表的一个方法,用法如下: In [1]: dict1 = {"name": "Jeny", "age": 18, ...
- Unity和虚幻的比较
很多人从Unity开始转向虚幻4了,我目前则相反,从研究使用虚幻4,回到了Unity 5上. 前端总结的Unity和Unreal 4的一些优缺点,自己做的对比图.就先放这里了. 其实,作为引擎,各有优 ...
- eclispe创建gradle项目
1.打开eclipse,选择Help——>install from Catalog,安装如图所示的gradle 2.右击空白处,new——>other——>Gradle——>G ...