![](/img/trans.png)
[英]Traversing an undirected, unweighted graph with a twist: minimum visits to each node
[英]Last node in graph traversing with Q queries
給定一個有 N 個節點的有向圖(1<=N<=100000),每個節點只有一個出邊,但可以有多個入邊。 有 Q(1<=Q<=10^5) 個查詢,其中每個查詢有 2 種類型。
我知道我們可以在每個查詢的 O(N) 復雜度中解決這個問題(總體復雜度為 QN ),但是由於查詢的數量很高(10^5),這似乎不是有效的解決方案?
知道如何以更好的時間復雜度解決這個問題嗎? 謝謝
如果您不需要在線回答查詢,最簡單的方法是使用路徑壓縮實現 union-find 並向后處理輸入。 通過鏈接每個永遠不會被刪除的弧來初始化(使用下面的特殊情況)。 向后掃描,對於第二種類型的查詢,添加弧,除非它會創建一個循環,在這種情況下,將尾部鏈接到 id 為 -1 的特殊頂點。 要回答第一種查詢,請使用路徑壓縮找到根。 運行時間將為 O((Q + N) log N)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.