Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
40
Task/Kosaraju/Python/kosaraju-1.py
Normal file
40
Task/Kosaraju/Python/kosaraju-1.py
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
def kosaraju(g):
|
||||
class nonlocal: pass
|
||||
|
||||
# 1. For each vertex u of the graph, mark u as unvisited. Let l be empty.
|
||||
size = len(g)
|
||||
|
||||
vis = [False]*size # vertexes that have been visited
|
||||
l = [0]*size
|
||||
nonlocal.x = size
|
||||
t = [[]]*size # transpose graph
|
||||
|
||||
def visit(u):
|
||||
if not vis[u]:
|
||||
vis[u] = True
|
||||
for v in g[u]:
|
||||
visit(v)
|
||||
t[v] = t[v] + [u]
|
||||
nonlocal.x = nonlocal.x - 1
|
||||
l[nonlocal.x] = u
|
||||
|
||||
# 2. For each vertex u of the graph do visit(u)
|
||||
for u in range(len(g)):
|
||||
visit(u)
|
||||
c = [0]*size
|
||||
|
||||
def assign(u, root):
|
||||
if vis[u]:
|
||||
vis[u] = False
|
||||
c[u] = root
|
||||
for v in t[u]:
|
||||
assign(v, root)
|
||||
|
||||
# 3: For each element u of l in order, do assign(u, u)
|
||||
for u in l:
|
||||
assign(u, u)
|
||||
|
||||
return c
|
||||
|
||||
g = [[1], [2], [0], [1,2,4], [3,5], [2,6], [5], [4,6,7]]
|
||||
print kosaraju(g)
|
||||
36
Task/Kosaraju/Python/kosaraju-2.py
Normal file
36
Task/Kosaraju/Python/kosaraju-2.py
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
def kosaraju(g):
|
||||
size = len(g)
|
||||
vis = [False] * size
|
||||
l = [0] * size
|
||||
x = size
|
||||
t = [[] for _ in range(size)]
|
||||
|
||||
def visit(u):
|
||||
nonlocal x
|
||||
if not vis[u]:
|
||||
vis[u] = True
|
||||
for v in g[u]:
|
||||
visit(v)
|
||||
t[v].append(u)
|
||||
x -= 1
|
||||
l[x] = u
|
||||
|
||||
for u in range(size):
|
||||
visit(u)
|
||||
c = [0] * size
|
||||
|
||||
def assign(u, root):
|
||||
if vis[u]:
|
||||
vis[u] = False
|
||||
c[u] = root
|
||||
for v in t[u]:
|
||||
assign(v, root)
|
||||
|
||||
for u in l:
|
||||
assign(u, u)
|
||||
|
||||
return c
|
||||
|
||||
|
||||
g = [[1], [2], [0], [1, 2, 4], [3, 5], [2, 6], [5], [4, 6, 7]]
|
||||
print(kosaraju(g))
|
||||
Loading…
Add table
Add a link
Reference in a new issue