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

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

思路:

二分答案 + spfa判负环

#pragma GCC optimize(2)#pragma GCC optimize(3)#pragma GCC optimize(4)#include
using namespace std;#define fi first#define se second#define pi acos(-1.0)#define LL long long//#define mp make_pair#define pb push_back#define ls rt<<1, l, m#define rs rt<<1|1, m+1, r#define ULL unsigned LL#define pll pair
#define pli pair
#define pii pair
#define piii pair
#define mem(a, b) memset(a, b, sizeof(a))#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);#define fopen freopen("in.txt", "r", stdin);freopen("out.txt", "w", stout);//headconst int N = 55;const double eps = 1e-4;vector
g[N];bool vis[N];double dis[N];int n;bool spfa(int u, double x) { vis[u] = true; for (pii e : g[u]) { int v = e.fi; if(dis[u] + (double)e.se - x < dis[v]) { dis[v] = dis[u] + e.se - x; if(vis[v]) return true; if(spfa(v, x)) return true; } } vis[u] = false; return false;}bool check(double x) { mem(vis, false); for (int i = 1; i <= n; i++) dis[i] = 0; for (int i = 1; i <= n; i++) if(spfa(i, x)) return true; return false;}int main() { int T, m, u, v, w; scanf("%d", &T); for (int cs = 1; cs <= T; cs++) { scanf("%d %d", &n, &m); for (int i = 1; i <= n; i++) g[i].clear(); double sum = 0; for (int i = 0; i < m; i++) { scanf("%d %d %d", &u, &v, &w); g[u].pb(pii{v, w}); sum += w; } double l = 0, r = sum+1, mid = (l+r)/2; while(l + eps < r) { if(check(mid)) r = mid; else l = mid; mid = (l+r)/2; } if(check(r)) printf("Case #%d: %.2f\n", cs, mid);//检查右端点来判负环 else printf("Case #%d: No cycle found.\n", cs); } return 0;}

 

转载于:https://www.cnblogs.com/widsom/p/9940160.html

你可能感兴趣的文章
tar打包文件时提示绝对路径的问题
查看>>
设计模式之单例模式
查看>>
memset struct含有string的崩溃
查看>>
时间范围比较
查看>>
给初学者的RxJava2.0教程(三)(转)
查看>>
探究ConcurrentHashMap中键值对在Segment[]的下标如何确定
查看>>
数据结构与框架-抽象类与接口
查看>>
hdu 1163 Eddy's digital Roots
查看>>
chrome最小字体12px如何修改
查看>>
elementui input样式覆盖 头部小图等
查看>>
poj 1088滑雪【深搜】
查看>>
什么是关键字驱动框架(自动化测试)
查看>>
黑马程序员-面向对象-07天-8 (模版方法)
查看>>
python监控服务器的主备模式
查看>>
代码片段
查看>>
win8 iis 安装
查看>>
Openstack Neutron 允许VM流量转发
查看>>
Windows 7/8/8.1 硬盘安装法实现 ubuntu 14.04 双系统
查看>>
nodejs单元测试
查看>>
Docker学习记录3: 搭建 Private Registry
查看>>