Analiza tego kodu ze względu na sortowanie dzielone pomiędzy pierwszą funkcją wołającą rekurencję, rekurencją i zmiennymi globalnymi jest trudna.
Ale można zobaczyć od końca programu, kiedy vis.size() != nei.size().
vis[imie] jest ustawiane za każdym wejściem do topoSort, a to jest dokonywane dla wszystkich nei[imie] w pętli w main. Więc coś musi się dziać z tymi imieniami, które nie są wymienione jako pierwsze. Czyli wiadomo już, że vis.size() >= nei.size(). Może być więcej imion wymienionych z prawej strony, które są przetwarzane przez rekurencyjne wywołania topoSort.
Ale jakie to ma znaczenie w tym algorytmie, nie wiem, ponieważ nie rozważam algorytmu sortowania. Przypuszczam, że może chodzić o to, iż pewne imiona mogą nie mieć ustalonej nadrzędności a istnieć w sta. Ponieważ później w conFn sprawdzasz tylko obecność duplikatów, a nie braków. Te komentarze o grafie są mylące, ponieważ tam nie ma żadnego grafu, są inne struktury.