Cod sursa(job #2162651)

Utilizator GeorgeCalinPetruta George-Calin GeorgeCalin Data 12 martie 2018 12:26:37
Problema Flux maxim Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <fstream>
#define nmax 1002
using namespace std;
ifstream fin("maxflow.in");
ofstream fout("maxflow.out");

int mini,flux=0;
int a[nmax][nmax],cost[nmax][nmax],n,m,x,y,val;

int dfs(int nod)
{
    if(nod==1)
    {
        mini=1000000;
    }
    for(int i=1;i<=n;i++)
    {
        if(a[nod][i])
        {
            mini=min(cost[nod][i],mini);
            if(i==n)
            {
                cost[nod][i]-=mini;
                if(!cost[nod][i])
                    a[nod][i]=0;
                flux+=mini;
                return 1;
            }
            if(dfs(i))
            {
                cost[nod][i]-=mini;
                if(!cost[nod][i])
                    a[nod][i]=0;
                i--;
                if(nod==1)
                    continue;
                else
                    break;
            }
        }
    }
}

int main()
{
    fin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        fin>>x>>y>>val;
        a[x][y]=1;
        cost[x][y]=val;
    }
    dfs(1);
    fout<<flux;
    return 0;
}