博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA11090 Going in Cycle!!
阅读量:5011 次
发布时间:2019-06-12

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

思路:

  二分答案 ans ,将所有边都减去 ans ,判断负环。

Code:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define lck_max(a,b) ((a)>(b)?(a):(b))const int maxn=505;const double eps=1e-3,INF=1e9;inline int read(){ int xs=0,kr=1;char ls; ls=getchar(); while(!isdigit(ls)) { if(!(ls^45)) kr=-1; ls=getchar(); } while(isdigit(ls)) { xs=(xs<<1)+(xs<<3)+(ls^48); ls=getchar(); } return kr*xs;}int n,m,u,v;double w;struct hh{ int nex,to; double w;}t[maxn];int head[maxn],cnt;inline void add(int nex,int to,int w){ t[++cnt].nex=head[nex]; t[cnt].to=to; t[cnt].w=w; head[nex]=cnt;}double d[maxn];int num[maxn];bool inq[maxn];queue
q;inline bool spfa(double mid){ for(int i=1;i<=n;i++) d[i]=INF; memset(inq,0,sizeof(inq)); memset(num,0,sizeof(num)); for(int i=1;i<=n;i++) d[i]=0.0,inq[i]=true,q.push(i); while(!q.empty()) { int u=q.front();q.pop();inq[u]=false; for(int i=head[u];i;i=t[i].nex) { int v=t[i].to;double w=t[i].w-mid; if(d[v]>d[u]+w) { d[v]=d[u]+w; if(!inq[v]) { inq[v]=true,q.push(v); if(++num[v]>n) return true; } } } } return false;}int T,cas;int main(){ T=read(); while(T--) { cas++; printf("Case #%d: ",cas); n=read();m=read(); memset(head,0,sizeof(head)); double l=0,r=0; for(int i=1;i<=m;i++) u=read(),v=read(),w=read(),add(u,v,w),r=lck_max(r,w); if(!spfa(r+1)) puts("No cycle found."); else { while(r-l>eps) { double mid=(l+r)/2; if(spfa(mid)) r=mid; else l=mid; } printf("%.2f\n",l); } }return 0;}

转载于:https://www.cnblogs.com/lck-lck/p/9837626.html

你可能感兴趣的文章
[思路]导入导出功能
查看>>
【iOS】UICollectionView自己定义Layout之蜂窝布局
查看>>
golang——(strings包)常用字符串操作函数
查看>>
发布aar到jcenter
查看>>
跨浏览器问题的五种解决方案
查看>>
XPath定位时,使用文本的方法小技巧。
查看>>
安装pandas报错(AttributeError: 'module' object has no attribute 'main')
查看>>
ch02 fundamental definition 01
查看>>
JSON解析
查看>>
Position is everything?(css定位学习的一些心得)(一)
查看>>
如何提高编程水平
查看>>
Jquery Uploadify3.21.与2.1版本 使用中存在的问题--记录三
查看>>
Linux查看进程的内存占用情况 分类: ubuntu ...
查看>>
[BZOJ 2818]Gcd
查看>>
FORM值传递与地址传递
查看>>
(译)yaml快速教程
查看>>
C:大数相加
查看>>
160. Intersection of Two Linked Lists
查看>>
人生苦短,我用python-- Day11
查看>>
JAVA Bean
查看>>