bzoj 1690: [Usaco2007 Dec]奶牛的旅行 spfa+二分答案
2017-07-16 10:37
375 查看
题意
找最优比例环。分析
二分答案后用spfa判负环。代码
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; const int N=1005; const double eps=1e-3; int n,m,cnt,last ,ins ,val ; double dis ; struct edge{int to,next,w;double v;}e[N*10]; int read() { int x=0,f=1;char ch=getchar(); while (ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while (ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } void addedge(int u,int v,int w) { e[++cnt].to=v;e[cnt].w=w;e[cnt].next=last[u];last[u]=cnt; } bool dfs(int x) { ins[x]=1; for (int i=last[x];i;i=e[i].next) if (dis[x]+e[i].v<dis[e[i].to]) { if (ins[e[i].to]) return 1; dis[e[i].to]=dis[x]+e[i].v; if (dfs(e[i].to)) return 1; } ins[x]=0; return 0; } bool check(double mid) { for (int i=1;i<=cnt;i++) e[i].v=(double)e[i].w*mid-val[e[i].to]; for (int j=1;j<=n;j++) dis[j]=0,ins[j]=0; for (int i=1;i<=n;i++) if (dfs(i)) return 1; return 0; } int main() { n=read();m=read(); for (int i=1;i<=n;i++) val[i]=read(); for (int i=1;i<=m;i++) { int x=read(),y=read(),w=read(); addedge(x,y,w); } double l=0,r=10000; while (r-l>eps) { double mid=(l+r)/2; if (check(mid)) l=mid; else r=mid; } printf("%.2lf",l); return 0; }
相关文章推荐
- bzoj1690 [Usaco2007 Dec]奶牛的旅行(最优比率环,二分答案+spfa判负环)
- bzoj 1690: [Usaco2007 Dec]奶牛的旅行(01分数规划--最优比率环)
- 【BZOJ】1690: [Usaco2007 Dec]奶牛的旅行
- 【bzoj1690】[Usaco2007 Dec]奶牛的旅行 分数规划+Spfa
- 【BZOJ 1690】 [Usaco2007 Dec]奶牛的旅行
- bzoj1690 [Usaco2007 Dec]奶牛的旅行
- bzoj1690 [Usaco2007 Dec]奶牛的旅行
- bzoj1690[Usaco2007 Dec]奶牛的旅行 01分数规划+spfa(最优比率环)
- 【BZOJ1690】【Usaco2007 Dec】奶牛的旅行 分数规划 判断负环
- bzoj1690:[Usaco2007 Dec]奶牛的旅行(分数规划+spfa判负环)
- [Usaco2007 Dec][BZOJ1690] 奶牛的旅行|分数规划|二分|SPFA
- BZOJ1690 [Usaco2007 Dec]奶牛的旅行
- bzoj 1690: [Usaco2007 Dec]奶牛的旅行【01分数规划+spfa】
- bzoj 1690: [Usaco2007 Dec]奶牛的旅行——分数规划+spfa判负环
- 【BZOJ】1690: [Usaco2007 Dec]奶牛的旅行(分数规划+spfa)
- BZOJ 1690: [Usaco2007 Dec]奶牛的旅行
- 【bzoj1690】[Usaco2007 Dec]奶牛的旅行
- 【bzoj1690】【Usaco2007 Dec】【奶牛的旅行】【分数规划】
- bzoj 1690: [Usaco2007 Dec]奶牛的旅行
- BZOJ 1690 【USACO 2007 Dec奶牛观光】