Un problema por el cual C deja de funcionar después de ejecutarlo.
¿Por qué?
# include ltcstdio gt
# include ltcstring gt
int first[201] , a[ 201], f[201];
int endl[200001], next[200001];
int tot, ans
void add_edge( int a, int b)
{
siguiente[ tot]= primero[a];
primero[a]= tot;
endl [tot]= b;
}
int max(int a, int b)
{
devolver un gtb? A: B;
}
int dfs(int x)
{
if(f[x] gt;=0 ) devuelve f[x];
int I = primero[x];
f[x]= 0;
Cuando (I)
{
int es = endl[I];
f[x]=max(f[x],DFS(es));
I = siguiente[I];
}
f[x] = a[x];
return f[x];
}
Impresión no válida (entero x)
{
if (f[x]==a[x])
{
printf("d\n ",x);
Retorno;
}
printf("d -", x);
f[x]-= a[x];
int I = primero[x];
Cuando (i)
{
int en = endl[I];
if (f[en]==f[x])
{
Imprimir(es);
Regresar;
}
I = siguiente[I];
}
}
int main(void)
{
int n;
scanf(" d ", ampn);
for(int I = 1; i lt= n; i)
scanf("d ", ampa[I]);
for(;;)
{
int a, b;
scanf("dd ", amp one, ampb
if(a = = 0 amp; ampb = = 0)break;
add_edge(a, b);
}
memset( f, 255, tamaño de(f));
for(int I = 1; i lt= n; i)
{
ans=max( ans, DFS(I));
}
for(int I = 1; i lt= n; i)
if (f[i] ==ans)
{
Imprimir(1);
Romper;
}
printf( "d\n ",ans);
Devuelve 0;
}