ToVisit = {V} Visited = {} while (still some vertices in ToVisit) { X = remove a vertex from ToVisit Visited += X foreach (Y in neighbours(X)) { if (Y == W) return TRUE if (Y not in Visited && Y not in ToVisit) ToVisit += Y } } a->b,c b->a,c,d c->a,b,d d->b,c,e e->d isPath(a,e) Iteration ToVisit Visited 0 a - 1 b,c a 2 c,c,d a,b 3 c,d,d a,b,c 4 d,d,d a,b,c,c 5 d,d,e a,b,c,d 6 7 8 9