class Graph:
def __init__(self):
self.V = [] class Vertex:
def __init__(self, x):
self.key = x
self.color = 'white'
self.d = 10000
self.f = 10000
self.pi = None
self.adj = []
self.next = None class Solution:
def Dfs(self, G):
for u in G.V:
u.color = 'white'
u.pi = None
global time
time = 0
for u in G.V:
if u.color == 'white':
self.DfsVisit(G, u) def DfsVisit(self, G, u):
global time
time = time + 1
u.d = time
u.color = 'gray'
for v in u.adj:
if v.color == 'white':
self.DfsVisit(G, v)
v.pi = u
u.color = 'black'
time = time + 1
u.f = time def TopologicalSort(self, G):
LinkedList = Vertex('#')
self.Dfs(G)
G.V.sort(key=lambda v:v.f)
for v in G.V:
v.next = LinkedList.next
LinkedList.next = v
return LinkedList if __name__ == '__main__':
undershorts = Vertex('undershorts')
socks = Vertex('socks')
pants = Vertex('pants')
shoes = Vertex('shoes')
belt = Vertex('belt')
shirt = Vertex('shirt')
tie = Vertex('tie')
jacket = Vertex('jacket')
watch = Vertex('watch') undershorts.adj = [pants, shoes]
socks.adj = [shoes]
pants.adj = [belt, shoes]
shoes.adj = []
belt.adj = [jacket]
shirt.adj = [belt, tie]
tie.adj = [jacket]
jacket.adj = []
watch.adj = [] G = Graph()
G.V = [undershorts,socks,pants,shoes,belt,shirt,tie,jacket,watch] m = Solution()
Sort_List = m.TopologicalSort(G)
p = Sort_List
while p.next != None:
print p.next.key, p.next.f
p = p.next

最新文章

  1. angular1.x的简单介绍(二)
  2. java入门第三步之数据库连接
  3. java异常
  4. [PHP]基本排序(冒泡排序、快速排序、选择排序、插入排序、二分法排序)
  5. nginx 域名绑定端
  6. CentOS7 安装 net-speeder 提升 VPS 网络性能
  7. iOS 学习 - 15.添加水印
  8. azure之MSSQL服务性能测试
  9. SUSE Linux实现局域网时间同步
  10. DBS小结
  11. oracle scn浅析
  12. Java基础知识二次学习-- 第一章 java基础
  13. ------ Tor(洋葱路由器)匿名网络源码分析——主程序入口点(一)------
  14. mariadb插入中文数据乱码解决过程
  15. Mybatis学习---连接MySQL数据库
  16. Lloyd’s 算法 和 K-Means算法
  17. Spring Security(二十五):7. Sample Applications
  18. python pandas模块,nba数据处理(1)
  19. 改变dos的编码方式
  20. luogu [TJOI2007]线段

热门文章

  1. [学习笔记] 七步从AngularJS菜鸟到专家(4和5):指令和表达式 [转]
  2. 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
  3. sql行列转换
  4. Android Studio项目结构
  5. java反射保存
  6. Linux下Tomcat重新启动
  7. 我的Win32开发抉择,Delphi老将复出
  8. MVC中使用RazorPDF创建PDF
  9. django CSRF token missing or incorrect
  10. NODE-WEBKIT教程(12)全屏