diff options
author | mathiasmagnusson <mathiasmagnussons@gmail.com> | 2022-02-26 17:20:49 +0100 |
---|---|---|
committer | mathiasmagnusson <mathiasmagnussons@gmail.com> | 2022-02-26 17:20:49 +0100 |
commit | 517381626f0d59b91519436b388ac505ced792f2 (patch) | |
tree | 77ff5e2e3857c971b6ebec618f163422b1ba9dcf /kattis-open-almostunionfind/bad.py | |
download | programming-problem-solving-517381626f0d59b91519436b388ac505ced792f2.tar.gz |
Initial commit
Diffstat (limited to 'kattis-open-almostunionfind/bad.py')
-rwxr-xr-x | kattis-open-almostunionfind/bad.py | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/kattis-open-almostunionfind/bad.py b/kattis-open-almostunionfind/bad.py new file mode 100755 index 0000000..1d4cbec --- /dev/null +++ b/kattis-open-almostunionfind/bad.py @@ -0,0 +1,53 @@ +#!/usr/bin/python + +while True: + try: + line = input() + except EOFError: + break + n, m = map(int, line.split()) + + u = [[i + 1] for i in range(n)] + + for _ in range(m): + line = input().split() + p = int(line[1]) + if line[0] != '3': + q = int(line[2]) + + if line[0] == '1': # union + a, b = False, False + for s in u: + if p in s: + a = s + if q in s: + b = s + if a == False or b == False: + raise ValueError(f"could not find {p} or {q} in {u}") + if a != b: + for i in b: + a.append(i) + b.clear() + u.remove(b) + elif line[0] == '2': # move + a, b = False, False + for s in u: + if p in s: + a = s + if q in s: + b = s + if a == False or b == False: + raise ValueError(f"could not find {p} or {q} in {u}") + if a != b: + a.remove(p) + b.append(p) + if not a: + u.remove(a) + elif line[0] == '3': + for s in u: + if p in s: + print(len(s), sum(s)) + break + else: + raise ValueError(f"could not find {p} in {u}") + # print(u) |