UVA11090 Going in Cycle!!

二分答案,用spfa判负环

注意格式;图不一定连通。

复杂度$O(nmlog(maxw-minw))$

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<cmath>
#define re register
using namespace std;
typedef double db;
const db eps=1e-;
#define N 100
#define M 20000
int n,m,t,ri[N]; db d[N],val[M<<]; bool inh[N],vis[N];
int cnt,hd[M],nxt[M<<],ed[M],poi[M];
void adde(int x,int y,db v){
nxt[ed[x]]=++cnt; hd[x]=hd[x]?hd[x]:cnt;
ed[x]=cnt; poi[cnt]=y; val[cnt]=v;
}
bool spfa(int st,db lim){
memset(d,,sizeof(d));
memset(inh,,sizeof(inh));
memset(ri,,sizeof(ri));
queue<int> h; h.push(st);
inh[st]=; d[st]=; vis[st]=;
while(!h.empty()){
int x=h.front(); h.pop();
inh[x]=;
for(int i=hd[x];i;i=nxt[i]){
int to=poi[i];
if(d[x]+val[i]-lim<d[to]){
d[to]=d[x]+val[i]-lim;
ri[to]=ri[x]+; vis[to]=;
if(ri[to]>=n) return ;//出现次数>=n则有环
if(!inh[to])
inh[to]=,h.push(to);
}
}
}return ;
}
bool check(db lim){
memset(vis,,sizeof(vis));
bool ok=;
for(re int i=;i<=n&&!ok;++i)
if(!vis[i]) ok|=spfa(i,lim);
return ok;
}
int main(){
scanf("%d",&t); int q1,q2;db q3;
for(int w=;w<=t;++w){
memset(hd,,sizeof(hd)); cnt=;
memset(nxt,,sizeof(nxt));
memset(ed,,sizeof(ed));
scanf("%d%d",&n,&m);
db l=1e8,r=-1e8;
for(re int i=;i<=m;++i){
scanf("%d%d%lf",&q1,&q2,&q3);
adde(q1,q2,q3);
l=min(q3,l);
r=max(q3,r);
}printf("Case #%d: ",w);
if(!check(r+))//如果减去最大边+1仍无负环,这个图就是无环图
{printf("No cycle found.\n"); continue;}
while(fabs(r-l)>eps){//二分
db mid=(l+r)/2.0;
if(check(mid)) r=mid;
else l=mid;
}printf("%.2lf\n",l);
}return ;
}

UVA11090 Going in Cycle!!(二分判负环)的更多相关文章

  1. 训练指南 UVA - 11090(最短路BellmanFord+ 二分判负环)

    layout: post title: 训练指南 UVA - 11090(最短路BellmanFord+ 二分判负环) author: "luowentaoaa" catalog: ...

  2. UVA11090 Going in Cycle (二分+判负环)

    二分法+spfa判负环.如果存在一个环sum(wi)<k*x,i=0,1,2...,k,那么每条边减去x以后会形成负环.因此可用spfa来判负环. 一般spfa判负环dfs最快,用stack次之 ...

  3. BZOJ3597 [Scoi2014]方伯伯运椰子 【二分 + 判负环】

    题目链接 BZOJ3597 题解 orz一眼过去一点思路都没有 既然是流量网络,就要借鉴网络流的思想了 我们先处理一下那个比值,显然是一个分数规划,我们二分一个\(\lambda = \frac{X ...

  4. UVA 11090 Going in Cycle!!(二分答案+判负环)

    在加权有向图中求平均权值最小的回路. 一上手没有思路,看到“回路”,第一想法就是找连通分量,可又是加权图,没什么好思路,那就转换题意:由求回路权值->判负环,求最小值->常用二分答案. 二 ...

  5. poj 3621 二分+spfa判负环

    http://poj.org/problem?id=3621 求一个环的{点权和}除以{边权和},使得那个环在所有环中{点权和}除以{边权和}最大. 0/1整数划分问题 令在一个环里,点权为v[i], ...

  6. poj 2049(二分+spfa判负环)

    poj 2049(二分+spfa判负环) 给你一堆字符串,若字符串x的后两个字符和y的前两个字符相连,那么x可向y连边.问字符串环的平均最小值是多少.1 ≤ n ≤ 100000,有多组数据. 首先根 ...

  7. [APIO2017]商旅——分数优化+floyd+SPFA判负环+二分答案

    题目链接: [APIO2017]商旅 枚举任意两个点$(s,t)$,求出在$s$买入一个物品并在$t$卖出的最大收益. 新建一条从$s$到$t$的边,边权为最大收益,长度为原图从$s$到$t$的最短路 ...

  8. Poj(3259),SPFA,判负环

    题目链接:http://poj.org/problem?id=3259 Wormholes Time Limit: 2000MS   Memory Limit: 65536K Total Submis ...

  9. Poj 3259 Wormholes(spfa判负环)

    Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 42366 Accepted: 15560 传送门 Descr ...

随机推荐

  1. cocos2dx游戏--欢欢英雄传说--添加人物

    接下来需要导入精灵帧资源,因为之前下载了TexturePacker,然后通过TexturePacker的"Publish sprite sheet"方法可以生成一个.pvr.ccz ...

  2. poj_2315 最小费用最大流

    题目大意 一个图上有N个顶点,从1到N标号,顶点之间存在一些无向边,边有长度,要求从顶点1走到顶点N,再从顶点N走回顶点1,其中不必要经过每个顶点,但是要求走的路径上的边只能经过一次.求出从1---& ...

  3. 【linux系列】安装虚拟机时候的3中网络模式

    一.桥接 桥接网络是指本地物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位,那么物理网卡和虚拟网卡就相当于处于同一个网段,虚拟交换机就相当于一台实现网络中 ...

  4. 【Android N 7.1.1】 处于锁屏界面时可以转屏

    frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowManager.ja ...

  5. 4.querystring属性

    1.querystring.stringify(obj[, sep[, eq[, options]]]) 序列化, 第二个参数分隔符, 第三个参数是对象分隔符 querystring.stringif ...

  6. 超级小的web手势库AlloyFinger

    针对多点触控设备编程的Web手势组件,快速帮助你的web程序增加手势支持,也不用再担心click 300ms的延迟了.拥有两个版本,无依赖的独立版和react版本.除了Dom对象,也可监听Canvas ...

  7. linux下远程服务器批量执行命令及SFTP上传文件 -- python实现

    之前写过一个python远程执行命令的脚本,但在一个性能测试中,要将程序批量分发到不同服务器,程序无法使用,再将之前的脚本更新,加入批量上传的功能.之前脚本地址:http://www.cnblogs. ...

  8. git add -A和git add . 的区别

    git add -A和 git add . git add -u在功能上看似很相近,但还是有所差别. git add . :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容 ...

  9. 焦作网络赛K-Transport Ship【dp】

    There are NN different kinds of transport ships on the port. The i^{th}ith kind of ship can carry th ...

  10. using the library to generate a dynamic SELECT or DELETE statement mysqlbaits xml配置文件 与 sql构造器 对比

    https://github.com/mybatis/mybatis-dynamic-sql MyBatis Dynamic SQL     What Is This? This library is ...