Submission #31278649
Source Code Expand
class UnionFind:
def __init__(self, n):
self.par = [i for i in range(n)]
self.siz = [1] * n
def root(self, x):
if self.par[x] == x:
return x
self.par[x] = self.root(self.par[x]) # 経路圧縮
return self.par[x]
def unite(self, x, y):
x = self.root(x)
y = self.root(y)
if x == y:
return
if self.siz[x] > self.siz[y]: # マージテク
self.par[y] = x
self.siz[x] += self.siz[y]
else:
self.par[x] = y
self.siz[y] += self.siz[x]
def is_same(self, x, y):
return self.root(x) == self.root(y)
def size(self, x):
return self.siz[self.root(x)]
n, q = map(int, input().split())
uf = UnionFind(n)
for i in range(q):
t, u, v = map(int, input().split())
if t == 0:
uf.unite(u, v)
if t == 1:
print(int(uf.is_same(u, v)))
Submission Info
| Submission Time | |
|---|---|
| Task | A - Disjoint Set Union |
| User | Pro_ktmr |
| Language | PyPy3 (7.3.0) |
| Score | 100 |
| Code Size | 957 Byte |
| Status | AC |
| Exec Time | 882 ms |
| Memory | 88204 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 100 / 100 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | example_00 |
| All | example_00, random_00, random_01, random_02, random_03, random_04, random_05, random_06, random_07, random_08, random_09 |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| example_00 | AC | 62 ms | 62180 KiB |
| random_00 | AC | 676 ms | 85704 KiB |
| random_01 | AC | 624 ms | 84768 KiB |
| random_02 | AC | 685 ms | 86088 KiB |
| random_03 | AC | 213 ms | 86364 KiB |
| random_04 | AC | 515 ms | 81024 KiB |
| random_05 | AC | 713 ms | 83612 KiB |
| random_06 | AC | 438 ms | 88204 KiB |
| random_07 | AC | 157 ms | 79868 KiB |
| random_08 | AC | 340 ms | 79832 KiB |
| random_09 | AC | 882 ms | 87284 KiB |