Cod sursa(job #2181689)

Utilizator cris90robert@yahoo.comseretan cristian [email protected] Data 21 martie 2018 19:59:48
Problema Flux maxim Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include<iostream>
#include<fstream>

using namespace std;
int cost[401][401]={},viz[401]={},cost2[401][401]={},tata[401];
void BF(int p,int n)
{
	
	int i,ok,j,min;
	if(p==n)
	{
			
				min=2000000000;
				j=p;
			while(tata[j]!=0)
			{
				if(cost[tata[j]][j]-cost2[tata[j]][j]<min)
				{
					min=cost[tata[j]][j]-cost2[tata[j]][j];
				}
				j=tata[j];
			}
			j=p;
			while(tata[j]!=0)
			{
				cost2[tata[j]][j]+=min;
				j=tata[j];
			}
			
			viz[p]=0;
	}
	else
	{
	for(i=1;i<=n;i++)
	{
		
	
		
		if(viz[i]==0&&cost[p][i]!=0)
		{
		
		
			
				viz[i]=1;
				tata[i]=p;
				BF(i,n);
			
		}
	}
	viz[p]=0;
	}
}
		
		
int main()
{
	int a,b,c,i,m,n,flux=0;
	ifstream f("maxflow.in");
	ofstream g("maxflow.out");
	f>>n>>m;
	for(i=1;i<=m;i++)
	{
		f>>a>>b>>c;
		cost[a][b]=c;
		
	}
	viz[1]=1;
	tata[1]=0;
	BF(1,n);
	for(i=1;i<=n;i++)
	{
		if(cost2[1][i]!=0)
		{
			flux+=cost2[1][i];
		}
	}
	g<<flux;
	
	f.close();
	g.close();

}