Submission #22129492
Source Code Expand
from collections import defaultdict
from collections import Counter
class UnionFind():
def __init__(self, n):
self.n = n
self.parents = [-1] * n
def find(self, x):
if self.parents[x] < 0:
return x
else:
self.parents[x] = self.find(self.parents[x])
return self.parents[x]
def union(self, x, y):
x = self.find(x)
y = self.find(y)
if x == y:
return
if self.parents[x] > self.parents[y]:
x, y = y, x
self.parents[x] += self.parents[y]
self.parents[y] = x
def size(self, x):
return -self.parents[self.find(x)]
def same(self, x, y):
return self.find(x) == self.find(y)
def members(self, x):
root = self.find(x)
return [i for i in range(self.n) if self.find(i) == root]
def roots(self):
return [i for i, x in enumerate(self.parents) if x < 0]
def group_count(self):
return len(self.roots())
def all_group_members(self):
group_members = defaultdict(list)
for member in range(self.n):
group_members[self.find(member)].append(member)
return group_members
def __str__(self):
return '\n'.join(f'{r}: {m}' for r, m in self.all_group_members().items())
N,Q = map(int, input().split())
C = list(map(int, input().split()))
CC = []
for i in range(N):
CC.append(Counter([C[i]]))
uf = UnionFind(N)
for i in range(Q):
q,a,b = map(int, input().split())
if q==1:
if not uf.same(a-1,b-1):
a = uf.find(a-1)
b = uf.find(b-1)
if uf.parents[a] > uf.parents[b]:
a, b = b, a
CC[a]+=CC[b]
uf.union(a,b)
else:
print(CC[uf.find(a-1)][b])
Submission Info
| Submission Time | |
|---|---|
| Task | F - Confluence |
| User | H20 |
| Language | PyPy3 (7.3.0) |
| Score | 0 |
| Code Size | 1880 Byte |
| Status | TLE |
| Exec Time | 3314 ms |
| Memory | 206912 KiB |
Judge Result
| Set Name | Sample | All | ||||||
|---|---|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 0 / 600 | ||||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | sample_01.txt, sample_02.txt, sample_03.txt |
| All | path_01.txt, path_02.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_11.txt, random_12.txt, random_13.txt, random_21.txt, random_22.txt, random_23.txt, sample_01.txt, sample_02.txt, sample_03.txt, special_01.txt, special_02.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| path_01.txt | TLE | 3314 ms | 158008 KiB |
| path_02.txt | AC | 561 ms | 155884 KiB |
| random_01.txt | AC | 456 ms | 72968 KiB |
| random_02.txt | AC | 610 ms | 71348 KiB |
| random_03.txt | AC | 523 ms | 71548 KiB |
| random_04.txt | AC | 602 ms | 71564 KiB |
| random_05.txt | TLE | 3314 ms | 174012 KiB |
| random_06.txt | AC | 1063 ms | 162096 KiB |
| random_07.txt | AC | 1327 ms | 173792 KiB |
| random_08.txt | AC | 1069 ms | 162504 KiB |
| random_11.txt | AC | 1077 ms | 171688 KiB |
| random_12.txt | AC | 1066 ms | 168636 KiB |
| random_13.txt | AC | 1082 ms | 169580 KiB |
| random_21.txt | AC | 1108 ms | 172276 KiB |
| random_22.txt | TLE | 3314 ms | 173500 KiB |
| random_23.txt | AC | 1261 ms | 172836 KiB |
| sample_01.txt | AC | 70 ms | 65036 KiB |
| sample_02.txt | AC | 60 ms | 65020 KiB |
| sample_03.txt | AC | 60 ms | 64996 KiB |
| special_01.txt | AC | 667 ms | 206912 KiB |
| special_02.txt | AC | 483 ms | 129632 KiB |