hdu4280 Island Transport 最大流模板Dinic算法
来源:互联网 发布:淘宝备注怎么备注 编辑:程序博客网 时间:2024/05/10 21:53
题意: 求从最左边的岛到最右边的岛的最大容量
这道题还学会了手动开栈
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>#include<queue>#pragma comment(linker, "/STACK:1024000000,1024000000")//外挂开栈using namespace std;const int maxn = 100000 + 5;const int inf = 0x7f7f7f7f;int head[maxn], d[maxn];int tot;int n, m;struct Eage{ int t, w, next;}eage[maxn*2];inline void add(int x, int y, int c){ eage[tot].t = y; eage[tot].w += c; eage[tot].next = head[x]; head[x] = tot++; eage[tot].t = x; eage[tot].w += c;//注意这道题的边是双向的! eage[tot].next = head[y]; head[y] = tot++;}bool bfs(int s, int t){ queue<int> q; memset(d, -1, sizeof(d)); d[s] = 0; q.push(s); while (!q.empty()) { int u = q.front(); q.pop(); if (u == t) return true; for (int i = head[u]; i != -1; i = eage[i].next) { int v = eage[i].t; if (d[v] == -1 && eage[i].w > 0)//i写成v调试两个多小时 { d[v] = d[u] + 1; q.push(v); } } } return false;}int dfs(int u, int flow, int t){ if (u == t) return flow; int sum = 0; for (int i = head[u]; i != -1; i = eage[i].next) { int v = eage[i].t; int w = eage[i].w; if (w > 0 && d[v] == d[u]+1) { int tmp = dfs(v, min(flow-sum, eage[i].w), t); eage[i].w -= tmp; eage[i^1].w += tmp; sum += tmp; if (sum == flow) return sum; } } if (sum == 0)d[u] = 0; return sum;}int dinic(int s, int t){ int total = 0; while(bfs(s, t)) { total+=dfs(s, inf, t); } return total;}int main(){ //freopen("input.txt", "r", stdin); int t; cin >> t; while (t--) { cin >> n >> m; int s, t, x, y; int Min = inf, Max = -inf; for (int i = 1; i <= n; i++) { scanf("%d%d", &x, &y); if (x < Min) { Min = x; s = i; } if (x > Max) { Max = x; t = i; } } memset(head, -1, sizeof(head)); memset(eage, 0, sizeof(eage)); tot = 0; for (int i = 0; i < m; i++) { int u, v, x; scanf("%d%d%d", &u, &v, &x); add(u, v, x); } int ans = dinic(s, t); printf("%d\n", ans); } return 0;}
0 0
- hdu4280 Island Transport (网络流最大流)&(dinic算法模板)
- hdu4280 Island Transport 最大流模板Dinic算法
- hdu4280 Island Transport 最大流dinic
- hdu4280 Island Transport (最大流ISAP算法)
- hdu4280 Island Transport 最大流 ISAP模板题
- HDU4280(Island Transport )最大流SAP算法+当前弧优化
- hdu4280——Island Transport(最大流SAP算法)
- hdu4280 Island Transport (网络流最大流)
- HDU4280 Island Transport【最大流】【SAP】
- HDU4280 Island Transport【网络流】
- hdu4280 Island Transport(最大流入门)
- hdu4280 最大流DINIC
- HDU4280 Island Transport 网络流模版题
- Hdu4280 Island Transport
- Island Transport hdu 4280 (最大流 dinic)
- 网络流Dinic邻接表(模板)--hdu4280
- 【HDU4280】【最大流模板题】
- 最大流 dinic算法模板
- MSSQL Server的连接问题分析和解决(1)
- 9.12测试(一)——应用程序一运行就崩溃,且每次崩溃的位置都不一样
- 使用WinDbg获得托管方法的汇编代码
- Ubuntu下QTE的安装
- 黑马程序员_java基础之面向对象(二)
- hdu4280 Island Transport 最大流模板Dinic算法
- 【十二】初探继承
- 门户站收录不好怎么办?ccxtqj
- 内存、栈、堆的一点小总结 《程序员的自我修养》·笔记
- 修改数据库语言设置
- ActiveMq-Queue开发
- svm算法入门
- UINavigatonController遮挡内容
- Listener介绍