博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 最优比率环
阅读量:5364 次
发布时间:2019-06-15

本文共 2023 字,大约阅读时间需要 6 分钟。

只能说我被一个小错搞得好心痛,本一写好代码感觉写的还优美,但一个小的不能再小的 i 写出u ,害的我正正调了一天。还不的不与别人对比看。OMG!!

具体的分析找别人的吧,说的比我好,要吃个苹果放松下

#include 
#include
#include
#include
#include
#define maxn 1005using namespace std;const int INF = 0x3f3f3f;double mid;struct Edge{ int from,to; int fun,cost; double dis; int next; void assign(int a,int b,int c,int d,int e){ from = a; to = b; cost = c; fun = d; next = e; //printf("%d %d %d %d \n",from,to,cost,fun); } void update(double k){ dis = -(fun - k * cost); } /* void print(){ printf("%d %d %d %d %.2lf\n",from,to,cost,fun,dis); }*/ }edge[5*maxn]; int F[maxn];int n,m;int head[maxn];int pv = 1;void Addedge(int a,int b,int c,int d){ int e = head[a]; head[a] = pv; edge[pv++].assign(a,b,c,d,e);}bool SPFA(){ int cnt[maxn]; bool inq[maxn]; double d[maxn]; memset(cnt,0,sizeof(cnt)); memset(inq,0,sizeof(inq)); for(int i=1;i<=n;i++) d[i] = INF; queue
Q; while(!Q.empty()) Q.pop(); Q.push(1); inq[1] = true; d[1] = 0; while(!Q.empty()){ int u = Q.front(); Q.pop(); inq[u] = false; for(int i=head[u];i != -1;i=edge[i].next){ int v = edge[i].to; if(d[v] > d[u] + edge[i].dis){ d[v] = d[u] + edge[i].dis; if(!inq[v]){ Q.push(v); inq[v] = true; if(++cnt[v] >= n) return true; } } } } return false;}int main(){ //if(freopen("input.txt","r",stdin)== NULL) {printf("Error\n"); exit(0);} //if(freopen("output1.txt","w",stdout)== NULL) {printf("Error\n"); exit(0);} cin>>n>>m; for(int i=1;i<=n;i++) cin>>F[i]; memset(head,-1,sizeof(head)); for(int i=1;i<=m;i++){ int a,b,c,d; cin>>a>>b>>c; d = F[b]; Addedge(a,b,c,d); } double R=10000.0,L=0.0,ans = -1; while((R-L) > 1e-5){ mid = (R + L)/2; for(int i=1;i<=m;i++){ edge[i].update(mid); //edge[i].print(); } if(SPFA()) { ans = mid; L = mid; } else R = mid; } if(ans <= 0 ) printf("0\n"); else printf("%.2lf\n",L);}

  

转载于:https://www.cnblogs.com/acmdeweilai/archive/2013/05/23/3095325.html

你可能感兴趣的文章
利用bootstrap和webform的异步CRUD及分页
查看>>
HDUOJ 1879继续畅通工程(并查集)
查看>>
OC12_自动释放池
查看>>
Saiku资源帖
查看>>
解决手机页面中点击文本框,网页放大问题
查看>>
2-5
查看>>
牛客多校3 A-PACM Team(状压降维+路径背包)
查看>>
HDU - 4284 Travel(floyd+状压dp)
查看>>
1027 制作表格
查看>>
Android之Socket通信、List加载更多、Spinner下拉列表
查看>>
面向对象的介绍与特性
查看>>
typing-python用于类型注解的库
查看>>
20189215 2018-2019-2 《密码与安全新技术专题》第13周作业
查看>>
第四周作业
查看>>
一、HTML基础
查看>>
蓝牙进阶之路 (002) - HC-05与HC-06的AT指令的区别(转)
查看>>
mysql的limit经典用法及优化
查看>>
C#后台程序与HTML页面中JS方法互调
查看>>
mysql 同一个表中 字段a 的值赋值到字段b
查看>>
linux系统可执行文件添加环境变量使其跨终端和目录执行
查看>>