Pagini recente » Statistici Raduta Lavinia Elena (RadutaLaviniaElena) | Istoria paginii runda/9 | Istoria paginii runda/super_tare_frate | Cod sursa (job #16033) | Cod sursa (job #2274080)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream fin("maxflow.in");
ofstream fout("maxflow.out");
const int N=1000+5;
int n,m;
int g[N][N];
int dad[N];
bool viz[N];
inline bool BFS()
{
for(int i=1;i<=n;i++) viz[i]=0;
viz[1]=1;
dad[1]=-1;
queue<int>q;
q.push(1);
while(!q.empty())
{
int nod=q.front();
q.pop();
for(int nou=1;nou<=n;nou++)
{
if(g[nod][nou]>0 && viz[nou]==0)
{
q.push(nou);
dad[nou]=nod;
viz[nou]=1;
}
}
}
return viz[n];
}
int main()
{
fin>>n>>m;
for(int i=1;i<=m;i++)
{
int a,b,x;
fin>>a>>b>>x;
g[a][b]=x;
}
int ans=0;
while(BFS())
{
int flow=(1<<30);
for(int nod=n;nod!=1;nod=dad[nod])
{
int nou=dad[nod];
flow=min(flow,g[nou][nod]);
}
for(int nod=n;nod!=1;nod=dad[nod])
{
int nou=dad[nod];
g[nou][nod]-=flow;
g[nod][nou]+=flow;
}
ans+=flow;
}
fout<<ans<<"\n";
return 0;
}