Pagini recente » Cod sursa (job #3241334) | Cod sursa (job #60833) | Cod sursa (job #3223120) | Cod sursa (job #298203) | Cod sursa (job #186354)
Cod sursa(job #186354)
#include<stdio.h>
long n,m,a[101][101],F[101],U[101],Q[101],pr,ul,viz[101][101],sol[101];
long min(long a,long b)
{
if(a>b)
return b;
else
return a;
}
int BFS()
{
long i,k;
for(i=1;i<=n;i++)
{
F[i]=0;
U[i]=-1;
}
F[1]=2000000000;
pr=ul=1;
Q[1]=1;
while(pr<=ul)
{
k=Q[pr++];
for(i=1;i<=n;i++)
if(a[k][i]&&F[i]==0)
{
Q[++ul]=i;
F[i]=min(F[k],a[k][i]);
U[i]=k;
}
}
if(F[n]==0)
return 0;
for(i=n;i!=1;i=U[i])
{
a[U[i]][i]-=F[n];
a[i][U[i]]+=F[n];
}
return 1;
}
int main()
{
long i,x,y,c;
freopen("critice.in","r",stdin);
scanf("%ld%ld",&n,&m);
for(i=1;i<=m;i++)
{
scanf("%ld%ld%ld",&x,&y,&c);
if(x<y)
{
a[x][y]=c;
viz[x][y]=i;
}
else
{
a[y][x]=c;
viz[y][x]=i;
}
}
while(BFS());
int nr=0;
for(i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(viz[i][j]==1&&(a[i][j]=x=0||a[j][i]==0))
{
sol[viz[i][j]]=1;
nr++;
}
printf("%ld\n",nr);
for(i=1;i<=n;i++)
if(sol[i]==1)
printf("%ld\n",i);
return 0;
}