UVA - 10480
题意:
给你一个网络图,开始时候有 n n n, m m m两个整数,分别代表顶点个数和边的个数。下面 m m m行,每个边有三个整数 u , v , w u,v,w u,v,w组成,代表 u u u到 v v v有一条无向边,费用为 w w w。
现在让你把图破坏某些边,分成两个部分即与 1 1 1连接部分的和与 2 2 2连接部分,现在让你求破坏费用最小的的的情况下,需要破坏那些边。
分析:
最大流最小割定理, s s s到 t t t的最小割的边就是 s s s到 t t t的最大流的上的关键边.
接下来怎么求残余网络的关键边?
跑一边最大流之后, 让可以与源点 s s s联通的顶点标记,接下来遍历所有边,如果该边的一个顶点标记,而另一个顶点未标记,那么这就是其中一个关键边。
代码:
#include<bits/stdc++.h>
#define mset(a,b) memset(a,b,sizeof(a))
using namespace std;
typedef long long ll;
typedef pair<int,int> P