Pagini recente » Cod sursa (job #660793) | Cod sursa (job #2371270) | Cod sursa (job #352510) | Cod sursa (job #2244971) | Cod sursa (job #676486)
Cod sursa(job #676486)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("maxflow.in");
ofstream fout("maxflow.out");
#define inf 0x3f3f3f3f
#define dim 1005
#define fs first
#define sc second
#define mp make_pair
#define pb push_back
vector< pair <int,int> >v[dim];
short int coada[1000000][3],n,m,sol;
int mat[dim][dim];
void read()
{
int i, x, y, t;
fin>>n >>m;
for(i=1;i<=m;++i)
{
fin>>x >>y >>t;
v[x].pb(mp(y,t));
mat[x][y]=t;
}
}
void bfs()
{
int inc=1, sf=1;
coada[1][0]=1;
while(inc<=sf)
{
int x=coada[inc][0];
if(x==n)
{
int mic=inf,nod=inc;
while(nod!=1)
{
int x0=coada[nod][1];
int y0=coada[nod][0];
mic=min(mic,mat[x0][y0]);
nod=coada[nod][2];
}
nod=inc;
while(nod!=1)
{
int x0=coada[nod][1];
int y0=coada[nod][0];
mat[x0][y0]=mat[x0][y0]-mic;
nod=coada[nod][2];
}
sol+=mic;
}
for(int k=0;k<v[x].size();++k)
{
coada[++sf][0]=v[x][k].fs;
coada[sf][1]=x;
coada[sf][2]=inc;
}
++inc;
}
}
int main()
{
read();
bfs();
fout<<sol;
return 0;
}