Witam!
Czy moglibyście mi powiedzieć, co w moim kodzie jest źle zrobione? Wiem, że coś jest, bo sprawdzarka wywala 1 wrong answer (na 8 testów). Z góry dziękuję :)
#include <stdio.h>
#include <string.h>
#define ui unsigned int
using namespace std;
const ui nieodwiedzony=0, przetwarzany=1, przetworzony=2, rozmiar=100000;
struct E {E*next; ui u;};
E*L[rozmiar+1];
ui element=0, stos[rozmiar], stan[rozmiar+1];
void DFS(ui value);
bool graf_acykliczny=true;
main()
{
ui n, m;
scanf("%d%d", &n, &m);
memset(L, 0, n*sizeof(ui));
memset(stan, 0, n*sizeof(ui));
ui u,v;
for(ui i=1; i<=m; i++)
{
E*p;
scanf("%d%d", &u, &v);
p=new E;
p->next=L[u];
p->u=v;
L[u]=p;
}
for(ui v=1; v<=n; v++)
if(stan[v]==nieodwiedzony)
{
DFS(v);
if(!graf_acykliczny) break;
}
if(!graf_acykliczny)
printf("NIE");
else
for(int i=element-1; i>=0; i--)
printf("%d ", stos[i]);
}
void DFS(ui value)
{
stan[value] = przetwarzany;
E*p=L[value];
while(p)
{
switch(stan[p->u])
{
case przetwarzany:
graf_acykliczny=false; return;
case nieodwiedzony:
DFS(p->u);
if(!graf_acykliczny) return;
break;
}
p=p->next;
}
stan[value]=przetworzony;
stos[element++]=value;
}
Wejście standardowe: ilość wierzchołków, ilość warunków, warunki w osobnych liniach, np.
8 9
8 7
7 1
7 5
6 4
5 1
4 5
3 5
3 2
2 7