Nếu có một đường dẫn từ nguồn xđến một chu kỳ nào đó không phải lúc nào cũng mâu thuẫn với sự tồn tại của một con đường đơn giản. Hãy xem ví dụ sau:
Ở đây có một chu kỳ có thể đạt được từ x và y. Vấn đề này có thể được giải quyết trongO(|V|+|E|).
Bạn có thể chạy BFS để tìm khoảng cách ngắn nhất từ x đến mọi đỉnh trên biểu đồ và giống nhau từ y. Một nút thuộc về đường dẫn ngắn nhất từx đến y nếu và chỉ nếu
distance(x,u)+distance(u,y)=distance(x,y)
Bây giờ, để kiểm tra xem có một đường dẫn đơn hay không, hãy kiểm tra xem các nút hợp lệ trong đường dẫn ngắn nhất ở mọi khoảng cách xảy ra nhiều nhất một lần. Đây là, nếu có ít nhất hai nút thuộc về một con đường ngắn nhất từ
x đến
y có cùng khoảng cách với
xsau đó, có ít nhất hai con đường ngắn nhất, nếu không nó là duy nhất. Bạn có thể thực hiện tất cả xử lý hậu kỳ trong
O(|V|).