-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathHello_World!.py
39 lines (32 loc) · 958 Bytes
/
Hello_World!.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from collections import defaultdict
def topological_sort(graph):
in_degree = defaultdict(int)
for u in graph:
for v in graph[u]:
in_degree[v] += 1
queue = [u for u in graph if in_degree[u] == 0]
sorted_order = []
while queue:
u = queue.pop(0)
sorted_order.append(u)
for v in graph[u]:
in_degree[v] -= 1
if in_degree[v] == 0:
queue.append(v)
return sorted_order if len(sorted_order) == len(graph) else []
cases = 1
while True:
n = int(input())
if n == 0:
break
graph = defaultdict(list)
for _ in range(n):
line = input().split()
for i in range(1, len(line)):
graph[line[i]].append(line[0])
sorted_order = topological_sort(graph)
if sorted_order:
print(f"Case #{cases}: {' '.join(sorted_order)}")
else:
print(f"Case #{cases}: No valid order exists")
cases += 1