JZOJ4735【NOIP2016提高A组模拟8.24】最小圈 Spfa深搜判负环
来源:互联网 发布:淘宝专业版一钻以上 编辑:程序博客网 时间:2024/06/14 06:49
题目大意
给你一幅
解题思路
看到这题一个很好的思路就是二分答案,把问题转化成判定性问题。
二分答案后,将每条边的边权都减去答案
还有一种判负环的思想就是用Dfs来跑Spfa,然后一个点重复出现时就存在负环。具体实现可以一开始把所有点的初始距离设为
程序
//YxuanwKeith#include <cstring>#include <algorithm>#include <cstdio>using namespace std;const int MAXN = 3e3 + 5, MAXM = 1e4 + 5;const int Inf = 1e5 + 5;const double eps = 1e-10;double Dis[MAXN], Mid, Len[MAXM * 2];int N, M;int tot, Last[MAXN], Next[MAXM * 2], Go[MAXM * 2];bool Flag[MAXN], Ok;void Link(int u, int v, double w) { Next[++ tot] = Last[u], Last[u] = tot, Go[tot] = v, Len[tot] = w;}void Spfa(int Now) { Flag[Now] = 1; for (int p = Last[Now]; p; p = Next[p]) { int v = Go[p]; if (Dis[Now] + Len[p] - Mid < Dis[v]) { if (Flag[v]) { Ok = 1; return; } Dis[v] = Dis[Now] + Len[p] - Mid; Spfa(v); if (Ok) return; } } Flag[Now] = 0;}bool Chk() { memset(Dis, 0, sizeof Dis); memset(Flag, 0, sizeof Flag); for (int i = 1; i <= N; i ++) { Ok = 0; Spfa(i); if (Ok) return 1; } return 0;}int main() { scanf("%d%d", &N, &M); for (int i = 1; i <= M; i ++) { int u, v; double w; scanf("%d%d%lf", &u, &v, &w); Link(u, v, w); } double l = -Inf, r = Inf; while (r - l > eps) { Mid = (l + r) / 2; if (Chk()) r = Mid; else l = Mid; } printf("%.6lf", Mid);}
2 0
- JZOJ4735【NOIP2016提高A组模拟8.24】最小圈 Spfa深搜判负环
- 【NOIP2016提高A组模拟7.15】立方体
- 计数【NOIP2016提高A组模拟7.15】
- 【NOIP2016提高A组模拟7.17】寻找
- 【NOIP2016提高A组模拟7.17】寻找
- 【NOIP2016提高A组模拟7.17】锦标赛
- 【NOIP2016提高A组模拟7.17】锦标赛
- 【NOIP2016提高A组模拟7.17】锦标赛
- 【NOIP2016提高A组模拟7.15】修路
- 【NOIP2016提高A组模拟7.15】计数
- 寻找【NOIP2016提高A组模拟7.17】
- 锦标赛【NOIP2016提高A组模拟7.17】
- 【NOIP2016提高A组模拟8.14】传送带
- 【NOIP2016提高A组模拟8.14】传送带
- 传送带【NOIP2016提高A组模拟8.14】
- 【NOIP2016提高A组模拟8.15】Password
- 【NOIP2016提高A组模拟8.15】Password
- 【NOIP2016提高A组模拟8.14】总结
- Java 中 == 比较的是什么?
- 如何部署JSP应用到阿里云服务器上(二)
- Linux下的find指令(文件查找)用法
- 跳转界面的工具类
- Xamarin Android提示内存溢出错误
- JZOJ4735【NOIP2016提高A组模拟8.24】最小圈 Spfa深搜判负环
- #127 Topological Sorting
- BroadcastReceiver应用详解
- 深入解析 ES6:Generator
- Python 3.x常见问题
- 推荐算法工程师
- 学习和使用ImageLoader、 Picasso、Fresco 图像加载
- 安卓EditText有时点击后无法自动弹出键盘的解决办法;TextWatcher多次调用问题
- 使用OKHttp3 get请求 , post请求 , 多文件上传 , 包看包会