Pagini recente » Cod sursa (job #2811914) | Cod sursa (job #117425) | Cod sursa (job #1142440) | Cod sursa (job #1778568) | Cod sursa (job #2162785)
#include <fstream>
#define nmax 1002
using namespace std;
ifstream fin("maxflow.in");
ofstream fout("maxflow.out");
int flux=0;
int a[nmax][nmax],cost[nmax][nmax],n,m,x,y,val,sol[nmax*10],viz[nmax][nmax],opt;
void dfs(int nod,int lev)
{
sol[lev]=nod;
for(int i=1;i<=n;i++)
{
if(a[nod][i]&&!viz[nod][i])
{
if(i==n)
{
int mini=100000002;
x=lev+1;
sol[x]=n;
for(int j=1;j<x;j++)
{
mini=min(mini,cost[sol[j]][sol[j+1]]);
}
if(mini){
flux+=mini;
for(int j=1;j<x;j++)
{
cost[sol[j]][sol[j+1]]-=mini;
if(!cost[sol[j]][sol[j+1]])
a[sol[j]][sol[j+1]]=0;
}
}
return;
}
viz[nod][i]=1;
dfs(i,lev+1);
viz[nod][i]=0;
}
}
}
int main()
{
fin>>n>>m;
for(int i=1;i<=m;i++)
{
fin>>x>>y>>val;
a[x][y]=1;
cost[x][y]=val;
if(x==y)
a[x][y]=0;
}
dfs(1,1);
fout<<flux;
return 0;
}