Witam. Pisze znowu temat poniewaz mam problem z zadaniem dotyczacym czy graf jest drzewem . Zastosowalem metode dfs nierekurencyjna. Ogolnie wywala mi blad "wrong answear" dla 4 testow na 14. Macie moze jakies wskazowki czego tutaj zapomnialem uwzglednic ???
Oto kod:
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
int main (){
stack <int> sts;
int n; // ilosc wierzcholkow
int k; // ilosc krawedzi
cin>>n;
cin>>k;
vector <vector <int> > vec(n+1);
bool tab[n+1];
for (int i=1; i<=n; i++){
tab[i]=false;
}
int a, b;
for (int i=1; i<=k; i++){
cin>>a>>b;
vec[a].push_back(b);
}
sts.push(1); // dodanie pierwszego wierzcholka do stacka.
while (sts.size()>0){ // petla wykonujaca przeszukiwanie grafu
int x = sts.top();
if (tab[x]==true){
cout<<"NO";
return 0;
}
else{
sts.pop();
tab[x]=true;
for (int i=0; i<vec[x].size(); i++){
int helpone = vec[x][i];
if (tab[helpone]==false){
sts.push(helpone);
}
else {
cout<<"NO";
return 0;
}
}
}
}
for (int i=1; i<=n; i++){
if(tab[i]==false){
cout<<"NO";
return 0;
}
}
cout<<"YES";
return 0;
}