Pagini recente » Cod sursa (job #3132734) | Cod sursa (job #167389) | Cod sursa (job #98471) | Cod sursa (job #2586796) | Cod sursa (job #2929662)
import collections
def tarjan(v):
global k, ctc
s.append(v)
index[v] = lowl[v] = k
k += 1
for vec in adiac[v]:
if index[vec] == -1:
tarjan(vec)
if vec in s: lowl[v] = min(lowl[v], lowl[vec])
if lowl[v] == index[v]:
nod = s.pop(-1)
while nod != v:
lowl[nod] = index[v]
nod = s.pop()
# ctc += 1
f = open("ctc.in","r")
g = open("ctc.out","w")
n, m = [int(_) for _ in f.readline().split()]
index = [-1 for _ in range(n+1)]
lowl = [-1 for _ in range(n+1)]
adiac=collections.defaultdict(list)
for i in range(m):
x, y = [int(_) for _ in f.readline().split()]
adiac[x].append(y)
# ctc = 0
k = 0
s = []
for i in range(n):
if index[i] == -1:
tarjan(i)
g.write(str(len(set(lowl)) - 1) + "\n")
for i in range(1, n):
if lowl[i] == lowl[i + 1]:
g.write(str(i) + " ")
else:
g.write(str(i) + "\n")
if lowl[n] == lowl[n-1]:
g.write(str(n) + " ")
else:
g.write(str(n) + "\n")