随笔分类 - 网络流
hdu 3870 Catch the Theves
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=3870最大流 转换成 最小割 最小割 转换成 最短路代码:#include<iostream>#include<cstring>#include<cstdio>#include<string>#include<set>#include<map>#include<cmath>#include<algorithm>#include<vector>#include<cmath>#include&l
阅读全文
zoj 2314 Reactor Cooling
摘要:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1314大牛就是大牛 人家能想到咱就是想不到呀根据所给流量下限(下限必流)记录每个点的入度(in) 和出度(out) 然后用(上限-下限)进行建图 (这是还可以增加的流)然后虚拟起点和汇点 根据每个点的 in 和 out如果 in > out 说明此点需要流出(in - out ) 然后从起点连一条边 流为( in - out ) 等于给此点一个流出的机会如果 in < out 说明此点需要流入 (out - in ) 然后向终点连一条边 流为 ( out - in
阅读全文
1277. Cops and Thieves
摘要:http://acm.timus.ru/problem.aspx?space=1&num=1277拆点建图 dinic 加一点小优化代码:#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<map>#include<vector>#include<stack>#include<set>#include<map>#include<queue>#include<alg
阅读全文
1421. Credit Operations
摘要:http://acm.timus.ru/problem.aspx?space=1&num=1421网络流 dinic 勉强过代码:#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<map>#include<vector>#include<stack>#include<set>#include<map>#include<queue>#include<algorit
阅读全文
poj 3436 ACM Computer Factory
摘要:http://poj.org/problem?id=3436网络流 最重要的是要建图呀由于速度的限制 要进行拆点 然后求解就可以了需要注意的地方1,和原点相连的点 满足进入它的各零件要求是0或22,和终点相连的点 需要用拆点后的后一个点连接代码:#include<iostream>#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>#include<vector>#include<set>#include<map>
阅读全文
hdu 4289 Control
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4289唉 本来对网络流的题目就不是很擅长 而且最近也没去碰这方面的题结果这次有两个用最大流的 而且都是拆点的 伤不起呀这个题把每个点拆成两个点 一个入点 一个出点入点到出点流就为 所给费用 出点到入点流为 0对于相连的点 相互之间都是 I 点的出点到 J 点的入点流为最大 J 点的入点到 I 点的出点流为0将 I 点和 J 点对换再建一次最后Dinic代码:#include <iostream>#include <cstdio>#include <cstring>#incl
阅读全文
hdu 4280 Island Transport
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4280最大流 应该是考 ISAP 的题 但是Dinic 也能过 但是要看人品自己只会写Dinic 所以就把Dinic 很多小的地方不断优化 终于6000+ms过了但这并不是目的 有时间还是要好好看看ISAP的代码:#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <algorithm>#define LL long long//外挂开栈#pra
阅读全文
poj 2914 Minimum Cut
摘要:http://poj.org/problem?id=2914此题和 hdu 3691 Nubulsa Expo几乎一样不再解释代码:#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int INF=0x7fffffff;const int N=505;int a[N][N];int dist[N];bool visited[N],dele[N];int n,m;int nd1,nd2;void Prim(){ int st=1; while(dele[st
阅读全文
hdu 3691 Nubulsa Expo
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=3691Stoer-Wagner算法 不理解不理解呀大体步骤是这样子的1,用类似Prim 的过程求得最后更新点 和倒数第二更新点2,求最后更新点和其它点的割集3,将最后一个点合并到倒数第二个更新点上代码:#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int INF=0x7fffffff;const int N=305;int a[N][N];int dist[N];bo
阅读全文
poj 2516 Minimum Cost
摘要:http://poj.org/problem?id=2516此题和2195题是一个题型不同之处在于此题需要对每种物品均求一次最小花费然后合计而且每种物品 还要看是否满足了需求量 有一种物品不满足的话就输出-1我的方法很笨 依次对每种物品进行求解而且由于流很小 我直接用了每次流都是减一 下个题应该就不行了(我猜)详情见代码注释#include<iostream>#include<string>#include<cstring>#include<algorithm>#include<queue>#include<cstdio>
阅读全文
poj 2195 Going Home
摘要:http://poj.org/problem?id=2195任何问题 都是 难了不会 会了不难 难就难在由不会变成会尤其是刚接触到一个新知识点的时候硬着头皮,耐心地去看去理解,一定能学会,然后你就会发现它原来并不难本题是一个最小费用流详解见代码注释#include<iostream>#include<string>#include<cstring>#include<algorithm>#include<queue>#include<cstdio>using namespace std;const int N=1001;//
阅读全文
poj 1273 Drainage Ditches
摘要:http://poj.org/problem?id=1273#include<iostream>#include<cmath>#include<string>#include<algorithm>#include<queue>#include<cstring>#include<cstdio>using namespace std;const int MAX=2000000005;const int N=205;int h[N];int flow[N][N];int Bfs(int n){ memset(h,0,
阅读全文
poj 3281 Dining
摘要:http://poj.org/problem?id=3281#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <cmath>#include <queue>#include <algorithm>using namespace std;const int MAX=0x7fffffff;const int N=510;int path[N][N];int l[N];int n,f,d;int Bfs(){
阅读全文
poj 3020 Antenna Placement
摘要:http://poj.org/problem?id=3020#include<iostream>#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;struct node{ int x,y;}pre[50][15];int b[4]={0,1,-1,0};int a[4]={1,0,0,-1};bool had[50][15];bool map[50][15]; //true ´ú±í *bool cover[5
阅读全文
poj 1273 Drainage Ditches
摘要:http://poj.org/problem?id=1273#include<iostream>#include<stdio.h>#include<string.h>#include<queue>#include<math.h>using namespace std;int path[202][202];bool had[202];int f[202];int N,M;int ans;int find(int st,int nd){ //cout<<"ttt\n"; memset(had,false,s
阅读全文