Cod sursa(job #3315555)

Utilizator popescu_georgePopescu George popescu_george Data 14 octombrie 2025 19:11:17
Problema Flux maxim Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
ifstream cin("maxflow.in");
ofstream cout("maxflow.out");
const int N=1001;
int c[N][N];
vector<short> g[N];
queue<short> q;
int main()
{
    int f=0,m,n;
    for(cin>>n>>m;m--;) {
        int i,j,k;
        cin>>i>>j>>k,g[i].push_back(j),g[j].push_back(i),c[i][j]=k;
    }
    for(;;) {
        short b[N]={0};
        for(q.push(1),b[1]=1;!q.empty();q.pop()) {
            int i=q.front();
            for(int j:g[i])
                if(!b[j]&&c[i][j])
                    q.push(j),b[j]=i;
        }
        if(!b[n])
            return cout<<f,0;
        for(int j:g[n])
            if(c[j][n]&&b[j]) {
                int h=c[j][n];
                for(int i=j;i>1;h=min(h,c[b[i]][i]),i=b[i]);
                f+=h,c[j][n]-=h,c[n][j]+=h;
                for(int i=j;i>1;c[b[i]][i]-=h,c[i][b[i]]+=h,i=b[i]);
            }
    }
}