1 solutions
-
0
C++ :
#include<stdio.h> #include<string.h> #include<queue> #define INF 1000000000 #include<vector> #define maxn 220 using namespace std; struct edge{ int to,cap,rev; }; vector<edge> map[maxn]; int used[maxn]; int n,m; int add_edge(int from,int to,int cap) { edge e; e.to=to; e.cap=cap; e.rev=map[to].size(); map[from].push_back(e); e.to=from; e.cap=0; e.rev=map[from].size()-1; map[to].push_back(e); } int dfs(int v,int t,int f) { if (v==t) return f; used[v]=1; for (int i=0;i<map[v].size();i++) { if (!used[map[v][i].to]&&map[v][i].cap>0) { int d=dfs(map[v][i].to,t,min(f,map[v][i].cap)); if (d>0) { map[v][i].cap-=d; map[map[v][i].to][map[v][i].rev].cap+=d; return d; } } } return 0; } int solve() { int i,j,c,k; scanf("%d%d",&n,&m); for (k=0;k<n;k++) { scanf("%d%d%d",&i,&j,&c); add_edge(i,j,c); } int ans=0; for (;;) { memset(used,0,sizeof(used)); int f=dfs(1,m,INF); if (f==0) return ans; ans+=f; } } int main() { int ans=solve(); printf("%d\n",ans); return 0; }
- 1
Information
- ID
- 19416
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By