//--------------------------------------------------------------------------- void Graph::Visit(int From, Cont & C) { if (From >= 0 && From < _Size) { int V = From; bool * Labelled = new bool[_Size]; for(int i = 0; i < _Size; i++) Labelled[i] = false; C.Push(V); Labelled[V] = true; do { V = C.Pop(); printf("%d ", V); for(int U = 0; U < _Size; U++) { if(!Labelled[U] && _m[V][U] != MAXDOUBLE) { C.Push(U); Labelled[U] = true; } } } while(!C.Empty()); delete [] Labelled; printf("\n"); } }