Pagini recente » Cod sursa (job #1670532) | Cod sursa (job #1350531) | Cod sursa (job #2983089) | Cod sursa (job #1090531) | Cod sursa (job #386872)
Cod sursa(job #386872)
# include <fstream>
using namespace std;
int c[1003][1003], n, t[1003], fmax;
void read ()
{
int m;
ifstream fin ("maxflow.in");
fin>>n>>m;
for (;m;--m)
{
int x, y, co;
fin>>x>>y>>co;
c[x][y]=co;
}
}
struct nod {
int info;
nod *next;};
int bfs (int s, int d)
{
nod *st, *dr, *q;
int k;
for (int i=1;i<=n;i++)
t[i]=-1;
st=dr=new nod;
st->next=NULL;
st->info=s;
t[s]=0;
while (st)
{
k=st->info;
for (int i=2;i<=n;i++)
if (c[k][i]>0 && t[i]==-1)
{
t[i]=k;
q=new nod;
q->next=NULL;
q->info=i;
dr->next=q;
dr=q;
if (i==d)
return 1;
}
q=st;
st=st->next;
delete q;
}
return 0;
}
void EK ()
{
int cmin;
while (bfs(1,n))
{
cmin=1000000000;
for (int i=n;t[i];i=t[i])
if (cmin>c[t[i]][i])
cmin=c[t[i]][i];
for (int i=n;t[i];i=t[i])
{
c[t[i]][i]-=cmin;
c[i][t[i]]+=cmin;
}
fmax+=cmin;
}
}
int main ()
{
read ();
EK();
ofstream fout ("maxflow.out");
fout<<fmax;
return 0;
}