POJ-3621-01分数规划,spfa判负环
来源:互联网 发布:js回调函数是闭包吗 编辑:程序博客网 时间:2024/05/22 06:29
题目大意:一张有向图,求一个环的点权和除以边权和,使得那个环在所有环中点权和除以边权和最大。
题目解析:最优比例环,令sigma(vi)/sigma(ei)<=ans,ans*sigma(ei)-sigma(vi)>=0,换句话说如果途中有负环,就不成立,上式成立需要所有换都不是负环,我们只需要二分ans即可;
AC代码:
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<queue>using namespace std;struct Edge{int to,w,next;}edge[5050];int tol,head[1010],n,k,fun[1010];void init(){memset(head,-1,sizeof(head));tol=0;}void addedge(int u,int v,int w){edge[tol].to=v;edge[tol].w=w;edge[tol].next=head[u];head[u]=tol++;}bool spaf(double m){queue<int>q;while(!q.empty())q.pop();int inque[1010],in[1010];double dis[1010];memset(inque,0,sizeof(inque));memset(in,0,sizeof(in));for(int i=1;i<=n;i++){dis[i]=0;inque[i]=1;in[i]=1;q.push(i);}while(!q.empty()){int u = q.front();q.pop();inque[u]=0;for(int i = head[u];i!=-1;i=edge[i].next){int v = edge[i].to;double t = m*edge[i].w-fun[v];if(dis[v]>dis[u]+t){dis[v]=dis[u]+t;if(!inque[v]){inque[v]=1;q.push(v);in[v]++;if(in[v]>n)return true;}}}}return false;}int main(){while(scanf("%d%d",&n,&k)!=EOF){init();for(int i=1;i<=n;i++)scanf("%d",&fun[i]);for(int i=1;i<=k;i++){int u,v,w;scanf("%d%d%d",&u,&v,&w);addedge(u,v,w);}double l=0,r=1000;while(r-l>1e-5){double mid=(l+r)/2;if(spaf(mid))l=mid;else r=mid;}printf("%.2f\n",l);}return 0;}
0 0
- POJ-3621-01分数规划,spfa判负环
- poj-3621-Sightseeing Cows-01分数规划+spfa判负环
- POJ 3621 Sightseeing Cows(01分数规划+二分+Spfa判负环)
- poj 3621 Sightseeing Cows 【最优比例环】 【0-1分数规划 + SPFA判负环】
- poj Sightseeing Cows 分数规划+spfa
- 【BZOJ1486】[HNOI2009]最小圈【SPFA判负环】【01分数规划】
- POJ 3621 Sightseeing Cows 01分数规划
- 【POJ 3621】[01分数规划]Dropping tests
- POJ 2976 01分数规划
- 01 分数规划 poj 2976
- sgu236:Greedy Path(分数规划+二分+spfa判负环)
- poj3621:Sightseeing Cows(0/1分数规划、SPFA判负环)
- POJ 3621 最优比率生成环 01分数规划问题
- POJ 3621 Sightseeing Cows(01分数规划)
- POJ 3621 Sightseeing Cows 最大密度环 01分数规划
- 01分数规划入门 poj 2976, 2728, 3621
- POJ3621 sightseeing cows 01分数规划+SPFA判定
- Dropping tests(01分数规划+spfa判断负权还)
- 从源码分析ArrayList和Vector区别
- 电源键关机
- OOP思想应该怎样来理解?
- 使用MVP+Retrofit+RxJava实现的的Android Demo (上)使用Nuclues库实现MVP
- RxJava & RxAndroid简单使用(3)
- POJ-3621-01分数规划,spfa判负环
- Android app 内存分配
- pthread_cond_broadcast与pthread_cond_signal使用区别
- 图解之TCP三次握手与四次挥手
- 阻止click点击事件
- 源码分析mycat1.6之网络篇---前端线程模型下篇(读写事件篇)
- 【GIT 基础篇五】绝杀技之远程仓库(搭建)
- 解题报告:HDU 4111 Alice and Bob 递推|博弈
- iOS9 & iOS10 HTTP 不能正常使用的解决办法