小菜鸟111 @ 2018-10-24 13:38:32
T了样例qwq
#include<iostream>
#include<cstring>
#include<queue>
#include<vector>
using namespace std;
const int INF=99999999;
struct ha{
int t,v;
};
vector<ha>q[10010];
int n,m,s,t,pre[10010],flow[10010],maxf;
int bfs(int s,int t){
queue<int>p;
memset(pre,-1,sizeof(pre));
pre[s]=0;
p.push(s);
flow[s]=INF;
while(!p.empty()){
int x=p.front();
p.pop();
if(x==t) break;
for(int i=0;i<q[x].size();i++)
if(pre[q[x][i].t]==-1){
pre[q[x][i].t]=x;
flow[q[x][i].t]=min(flow[x],q[x][i].v);
p.push(q[x][i].t);
}
}
if(pre[t]==-1) return -1;
return flow[t];
}
void haha(int s,int t){
int c=0;
while((c=bfs(s,t))!=-1){
int k=t;
while(k!=s){
int last=pre[k];
for(int i=0;i<q[k].size();i++)
if(q[k][i].t==last)
q[k][i].v+=c;
for(int i=0;i<q[last].size();i++)
if(q[last][i].t==k)
q[last][i].v-=c;
k=last;
}
maxf+=c;
}
}
int main(){
cin>>n>>m>>s>>t;
for(int i=1;i<=m;i++){
int x,y,z;
ha k;
cin>>x>>y>>z;
k.t=y;k.v=z;
q[x].push_back(k);
}
haha(s,t);
cout<<maxf;
return 0;
}
by hyfhaha @ 2018-10-24 13:54:05
T了样例。。。
by Lstdo @ 2018-10-24 13:59:44
怕不是死循环
by Celebrate @ 2018-10-24 19:12:18
就我一个用预流推进的吗