From 517381626f0d59b91519436b388ac505ced792f2 Mon Sep 17 00:00:00 2001 From: mathiasmagnusson Date: Sat, 26 Feb 2022 17:20:49 +0100 Subject: Initial commit --- kattis-open-almostunionfind/bad.py | 53 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100755 kattis-open-almostunionfind/bad.py (limited to 'kattis-open-almostunionfind/bad.py') 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) -- cgit v1.2.3