【hihocoder 1378】网络流二·最大流最小割定理
2017-10-04 18:44
399 查看
【Link】:http://hihocoder.com/problemset/problem/1378
【Description】
【Solution】
在求完最小割(最大流)之后;
可以在剩余网络中再从1号点做一次bfs;
往flow[][]为正的边走;
能走到的点就是S集合了;
【NumberOf WA】
【Reviw】
【Code】
#include <bits/stdc++.h> using namespace std; #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define LL long long #define rep1(i,a,b) for (int i = a;i <= b;i++) #define rep2(i,a,b) for (int i = a;i >= b;i--) #define mp make_pair #define pb push_back #define fi first #define se second #define ms(x,y) memset(x,y,sizeof x) #define ri(x) scanf("%d",&x) #define rl(x) scanf("%lld",&x) #define rs(x) scanf("%s",x+1) #define oi(x) printf("%d",x) #define ol(x) printf("%lld",x) #define oc putchar(' ') #define os(x) printf(x) #define all(x) x.begin(),x.end() #define Open() freopen("F:\\rush.txt","r",stdin) #define Close() ios::sync_with_stdio(0) typedef pair<int,int> pii; typedef pair<LL,LL> pll; const int dx[9] = {0,1,-1,0,0,-1,-1,1,1}; const int dy[9] = {0,0,0,-1,1,-1,1,-1,1}; const double pi = acos(-1.0); const int N = 500; const int INF = 0x3f3f3f3f; int n,m,flow[N+10][N+10],pre[N+10],ans1,ans2; queue <int> dl; vector <int> v; int main(){ //Open(); //Close(); ri(n),ri(m); rep1(i,1,m){ int x,y,z; ri(x),ri(y),ri(z); flow[x][y]+=z; } ans1 = 0; while (1){ ms(pre,255); dl.push(1); pre[1] = 0; while (!dl.empty()){ int x = dl.front(); dl.pop(); for (int i = 1;i <= n;i++) if (pre[i]==-1 && flow[x][i]){ pre[i] = x; dl.push(i); } } if (pre ==-1) break; int mi = INF; int now = n; while (now != 1){ mi = min(mi,flow[pre[now]][now]); now = pre[now]; } now = n; while (now != 1){ flow[pre[now]][now] -= mi; now = pre[now]; } ans1 += mi; } ms(pre,0); dl.push(1);pre[1] = 1; while (!dl.empty()){ int x = dl.front();dl.pop(); rep1(i,1,n) if (pre[i]==0 && flow[x][i]){ pre[i] = 1; dl.push(i); } } ans2 = 0; rep1(i,1,n) if (pre[i]){ ans2++; v.pb(i); } oi(ans1);oc;oi(ans2);puts(""); int len = v.size(); rep1(i,0,len-1){ oi(v[i]); if (i==len-1) puts(""); else oc; } return 0; }
相关文章推荐
- 网络流二·最大流最小割定理 HihoCoder - 1378
- hihocoder 1378 : 网络流二·最大流最小割定理
- [HihoCoder1378]网络流二·最大流最小割定理
- hihocoder 1378 网络流二·最大流最小割定理
- hihocode#1378 : 网络流二·最大流最小割定理(最大流求最小割集)
- hihocoder1378 网络流之最大流最小割
- hihocoder 网络流二·最大流最小割定理
- 网络流相关算法总结,最大流EK算法,SAP算法,最小费用最大流,最小费用路算法,最大流最小割定理
- hihocoder 118周 网络流四·最小路径覆盖(二分匹配,好题)
- 最大流最小割——hihoCoder 1378
- hihoCoder 1369 网络流一·Ford-Fulkerson算法 (网络流学习#1 记录)
- hihoCoder 1378 网络流二·最大流最小割定理 (网络流学习#2 记录)
- hihocoder 1369: 网络流一·Ford-Fulkerson算法
- hihoCoder 题目1 : 网络流一·Ford-Fulkerson算法
- hihoCoder 1393 网络流三·二分图多重匹配 (网络流学习#3 记录)
- hihocoder 1369 网络流之最大流
- 网络流三·二分图多重匹配 HihoCoder - 1393
- 网络流四·最小路径覆盖 HihoCoder - 13 4000 94
- hihoCoder-第115周-网络流一·Ford-Fulkerson算法
- hihocoder-1389&&2016北京网赛07 Sewage Treatment(二分+网络流)