restructure zeta/** to storage/zeta/**
This commit is contained in:
45
storage/zeta/py/completed/16402.py
Normal file
45
storage/zeta/py/completed/16402.py
Normal file
@@ -0,0 +1,45 @@
|
||||
import sys
|
||||
|
||||
input = sys.stdin.readline
|
||||
|
||||
|
||||
def find(deps, country) -> int:
|
||||
a = country
|
||||
while a != deps[a]:
|
||||
a = deps[a]
|
||||
return a
|
||||
|
||||
|
||||
def union(deps, win, lose):
|
||||
rw, rl = find(deps, win), find(deps, lose)
|
||||
if rw == rl:
|
||||
if rl == lose:
|
||||
deps[rl] = win
|
||||
deps[win] = win
|
||||
else:
|
||||
deps[rl] = rw
|
||||
|
||||
|
||||
def get_sovereigns(N, deps):
|
||||
return [i for i in range(N) if i == deps[i]]
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
N, M = map(int, input().split())
|
||||
name = [input().split()[2] for _ in range(N)]
|
||||
name.sort()
|
||||
name2index = {name[i]: i for i in range(N)}
|
||||
index2name = [name[i] for i in range(N)]
|
||||
|
||||
deps = [i for i in range(N)]
|
||||
|
||||
for _ in range(M):
|
||||
string_a, string_b, result = input().split(",")
|
||||
name_a, name_b = string_a.split()[2], string_b.split()[2]
|
||||
ia, ib = name2index[name_a], name2index[name_b]
|
||||
result = int(result)
|
||||
union(deps, ia, ib) if result == 1 else union(deps, ib, ia)
|
||||
|
||||
sovereigns = get_sovereigns(N, deps)
|
||||
print(len(sovereigns))
|
||||
[print(f"Kingdom of {index2name[i]}") for i in sovereigns]
|
||||
Reference in New Issue
Block a user