HDU 4240 Route Redundancy 一条流最大的路径
来源:互联网 发布:淘宝正义哥假货 编辑:程序博客网 时间:2024/04/30 03:44
题目来源:HDU 4240 Route Redundancy
题意:求最大流与一条流最大的路径的比值 前者最大流求出 后者是每一条路的最小值再取大
思路:我用的是dinic 可以在DFS的时候在传递一个参数 表示当前增广路可以通过最大的流量 然后当x==t 到达汇点时 在取他们的最大值
#include <cstdio>#include <queue>#include <vector>#include <cstring>#include <algorithm>using namespace std;const int maxn = 610;const int INF = 999999999;int ans;struct Edge{ int from, to, cap, flow; Edge(){} Edge(int from, int to, int cap, int flow) : from(from), to(to), cap(cap), flow(flow){}};struct Point{ double d, x, y, r; Point(){} Point(double d, double x, double y, double r) : d(d), x(x), y(y), r(r){}}a[maxn];int n, m, s, t;vector <Edge> edges;vector <int> G[maxn];bool vis[maxn];int d[maxn];int cur[maxn];void AddEdge(int from, int to, int cap){ edges.push_back(Edge(from, to, cap, 0)); edges.push_back(Edge(to, from, 0, 0)); m = edges.size(); G[from].push_back(m-2); G[to].push_back(m-1); }bool BFS(){ memset(vis, 0, sizeof(vis)); queue <int> Q; Q.push(s); d[s] = 0; vis[s] = 1; while(!Q.empty()) { int x = Q.front(); Q.pop(); for(int i = 0; i < G[x].size(); i++) { Edge& e = edges[G[x][i]]; if(!vis[e.to] && e.cap > e.flow) { vis[e.to] = 1; d[e.to] = d[x] + 1; Q.push(e.to); } } } return vis[t];}int DFS(int x, int a, int v){if(x == t){ans = max(ans, v);return a;} if(a == 0) {return 0; } int flow = 0, f; for(int& i = cur[x]; i < G[x].size(); i++) { Edge& e = edges[G[x][i]]; if(d[x] + 1 == d[e.to] && (f = DFS(e.to, min(a, e.cap-e.flow), min(v, e.cap))) > 0) { e.flow += f; edges[G[x][i]^1].flow -= f; flow += f; a -= f; if(a == 0) break; } } return flow;}int Maxflow(){ int flow = 0; while(BFS()) { memset(cur, 0, sizeof(cur)); flow += DFS(s, INF, INF); } return flow;}int main(){ int T; scanf("%d", &T); while(T--) { int cas, k; scanf("%d %d %d %d %d", &cas, &n, &k, &s, &t); edges.clear(); ans = 0; for(int i = 0; i < n; i++) G[i].clear(); for(int i = 0; i < k; i++) { int u, v, w; scanf("%d %d %d", &u, &v, &w); AddEdge(u, v, w); } int flow = Maxflow(); printf("%d %.3f\n", cas, (double)flow/ans); } return 0;}
0 0
- HDU 4240 Route Redundancy 一条流最大的路径
- HDU 4240 Route Redundancy(基础) [最大流]一条流最大的路径
- [最大流] hdu 4240 Route Redundancy
- hdu 4240 Route Redundancy(最大流)
- hdu 4240 Route Redundancy(最大流)
- hdu 4240 Route Redundancy 最大流 isap
- HDU 4240 Route Redundancy【最大流】
- HDU — 4240 Route Redundancy(最大流)
- HDU 4240 --Route Redundancy【最大流dinic && DFS】
- hdu 4240 Route Redundancy(求起点到终点的路径中流量最大的路径的流量)
- HDU 4240 Route Redundancy
- HDU 4240 Route Redundancy
- hdoj 4240 Route Redundancy 【最大流+ SPFA】
- hdu 4240 Route Redundancy 网络流
- HDU 4240 Route Redundancy 网络流
- hdu 4240 Route Redundancy(dinic)
- HDOJ 4240 - Route Redundancy 最大流+DP...阅读理解...
- 【 hdoj 4240】 Route Redundancy 【dinic+spfa】
- SWTBOK测试实践系列(1) -- 测试在项目前期的评审投入划算吗?
- 审计人员上路后才通知接机
- 正则表达式
- 史上最短小精悍的javascript编写的俄罗斯方块游戏,仅仅60行代码
- Android Bitmap 全面解析(二)加载多张图片的缓存处理 ...
- HDU 4240 Route Redundancy 一条流最大的路径
- Ibatis基础知识:#与$的区别
- Huffman 编码 数据结构
- JNI和NDK学习(1)--搭建开发环境
- java servlet过滤器应用场景
- HTML:各种距离说明scrollLeft,scrollWidth,clientWidth,offsetWidth
- SAXBuilder从String创建Document对象
- 目标板挂载NFS时“rpcbind: server localhost not responding, timed out”解决
- Base64算法实现