Witam. Podpinam się do postu
Mam kod, który na danych testowych działa dobrze, a przy zgłoszeniu daje złe odpowiedzi. Gdzie może być błąd ?
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
void DFS (vector <vector <int> > &graf, int wierzcholek);
void DFS (vector <vector <int> > &graf, int wierzcholek, vector <bool> &uzyto);
void BFS (vector <vector <int> > &graf, int wierzcholek);
vector <vector <int> > graf;
vector <int> wierzcholki;
int main ()
{
ios_base::sync_with_stdio(0);
int t; // Ilość grafów
cin >>t;
// Pobierz info. o każdym grafie i wykonaj dla niego fun. DFS lub BFS
for (int i__ =0; i__ <t; i__++)
{
int n; // Ilość wierzchołków w grafie
cin >>n;
for (int j__ =0; j__ <n; j__++)
{
int i, m; // 'i-ty' wierzchołek i 'm' wierzchołków jakie są z nim połączone
cin >>i >>m;
wierzcholki.clear ();
for (int z =0; z <m; z++)
{
int x; // Sąsiedni wierzchołek do 'i-tego'
cin >>x;
wierzcholki.push_back (x);
}
graf.push_back (wierzcholki);
}
cout <<"graph " <<(i__ +1)<<endl;
while (1)
{
int v, i;
cin >>v >>i;
// Przerwij pętlę jeżeli koniec danych do odczytu
if (v ==0 && i ==0)
break;
if (i ==0)
DFS (graf, v);
else
BFS (graf, v);
cout <<endl;
}
graf.clear ();
}
return 0;
}
//******************************************************************************************
//******************************************************************************************
void DFS (vector <vector <int> > &graf, int wierzcholek)
{
vector <bool> uzyto (graf.size (), false);
DFS (graf, wierzcholek, uzyto);
}
//******************************************************************************************
//******************************************************************************************
void DFS (vector <vector <int> > &graf, int wierzcholek, vector <bool> &uzyto)
{
vector<int>::iterator iter; //iterator po sąsiadach wierzchołka
uzyto[wierzcholek] =true; //kolorujemy odwiedzony wierzchołek
cout <<wierzcholek <<" ";
// Przejdź po połączonych wierzchołkach, jeśli tam nie byłeś wywołaj fun. DFS
for (iter =graf [wierzcholek -1].begin (); iter !=graf [wierzcholek -1].end (); iter++)
{
if (uzyto [*iter] ==false)
DFS (graf, *iter, uzyto);
}
}
//******************************************************************************************
//******************************************************************************************
void BFS (vector <vector <int> > &graf, int wierzcholek)
{
vector <int>::iterator iter;
vector <bool> uzyto (graf.size (), false);
queue <int> Q;
uzyto [wierzcholek -1] =true;
Q.push (wierzcholek);
cout <<wierzcholek <<" ";
while (!Q.empty ())
{
int u =Q.front ();
Q.pop ();
for (iter =graf [u -1].begin (); iter !=graf [u -1].end (); iter++)
{
if (uzyto [*iter -1] ==false)
{
cout <<*iter <<" ";
uzyto [*iter -1] =true;
Q.push (*iter);
}
}
}
}
-- Cz lip 19, 2012 12:23 pm --
Może ktoś rzucić na to okiem? Wiem, że zadanie stare ale dla mnie jest ważne to dlaczego na testowych danych działa Ok, a na stronie wyrzuca 'Błędna odpowiedź'.