![image]()
模板题:洛谷p3381
#include<bits/stdc++.h>
using namespace std;
const int N=5e3+10,M=5e4+10,INF=0x3f3f3f3f;
typedef long long LL;
int n,m,s,t,id=1;
int e[M<<1],h[N],cap[M<<1],d[M<<1],ne[M<<1];
int dp[N],vis[N],mf[N],pre[N];
void add(int u,int v,int w,int c){id++;e[id]=v;cap[id]=w;d[id]=c;ne[id]=h[u];h[u]=id;
}bool spfa(){memset(dp,0x3f,sizeof(dp));memset(mf,0,sizeof(mf));queue<int> q;q.push(s);vis[s]=1;dp[s]=0;mf[s]=INF;while(q.size()){int u=q.front();q.pop();vis[u]=0;for(int i=h[u];i;i=ne[i]){int v=e[i],w=d[i],c=cap[i];if(dp[v]>dp[u]+w&&c){dp[v]=dp[u]+w;mf[v]=min(mf[u],c);pre[v]=i;if(!vis[v]){q.push(v);vis[v]=1;}}}}return mf[t]>0;
}void EK(){LL flow=0,cost=0;while(spfa()){for(int v=t;v!=s;){int i=pre[v];cap[i]-=mf[t];cap[i^1]+=mf[t];v=e[i^1];}flow+=mf[t];cost+=mf[t]*dp[t];}cout<<flow<<' '<<cost<<endl;
}int main(){cin.tie(nullptr)->sync_with_stdio(false);cin>>n>>m>>s>>t;for(int i=1;i<=m;i++){int u,v,w,c;cin>>u>>v>>w>>c;add(u,v,w,c);add(v,u,0,-c);}EK();return 0;
}