DAG 的拓扑排序作为 DFS 的反向

问题描述

众所周知,DFS 输出的逆序是拓扑排序。

来源:- http://www.cse.ust.hk/faculty/golin/COMP271Sp03/Notes/MyL08.pdf

所以我尝试了这个并编写了一个拓扑排序函数,如下所示:-

class Solution:
    
    #Function to return list containing vertices in Topological order.
    def dfs(self,v,adj):
        # Code here
        self.visited.add(v)
        self.stack.append(v)
        for i in adj[v]:
            if i not in self.visited:
                self.dfs(i,adj)
                
    def topoSort(self,V,adj):
        # Code here
        self.visited=set()
        self.stack=[]
        for i in range(V):
            if i not in self.visited:
                self.dfs(i,adj)
        return self.stack[::-1]


#{ 
#  Driver Code Starts
# Driver Program


        

if __name__=='__main__':
    t = int(input())
    for i in range(t):
        e,N = list(map(int,input().strip().split()))
        adj = [[] for i in range(N)]
        
        for i in range(e):
            u,v=map(int,input().split())
            adj[u].append(v)
            
        ob = Solution()
        
        res = ob.topoSort(N,adj)
        
        print(res)

有人能告诉我给定代码中 topoSort 函数的正确性吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)