Submission #39419716
Source Code Expand
from collections import defaultdict
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())
class UnionFindLabel(UnionFind):
def __init__(self, labels):
assert len(labels) == len(set(labels))
self.n = len(labels)
self.parents = [-1] * self.n
self.d = {x: i for i, x in enumerate(labels)}
self.d_inv = {i: x for i, x in enumerate(labels)}
def find_label(self, x):
return self.d_inv[super().find(self.d[x])]
def union(self, x, y):
super().union(self.d[x], self.d[y])
def size(self, x):
return super().size(self.d[x])
def same(self, x, y):
return super().same(self.d[x], self.d[y])
def members(self, x):
root = self.find(self.d[x])
return [self.d_inv[i] for i in range(self.n) if self.find(i) == root]
def roots(self):
return [self.d_inv[i] for i, x in enumerate(self.parents) if x < 0]
def all_group_members(self):
group_members = defaultdict(list)
for member in range(self.n):
group_members[self.d_inv[self.find(member)]].append(self.d_inv[member])
return group_members
N, M = map(int, input().split())
uf = UnionFind(N+1)
ans = [0]*(N+1)
for _ in range(M):
u, v = map(int, input().split())
uf.union(u, v)
ans[uf.find(u)]+=1
for d in uf.all_group_members().items():
i, l = d[0], d[1]
if i == 0:
continue
if ans[i] == len(l):
pass
else:
print("No")
exit()
print("Yes")
Submission Info
| Submission Time | |
|---|---|
| Task | D - Unicyclic Components |
| User | KumaNeko08 |
| Language | Python (3.8.2) |
| Score | 400 |
| Code Size | 2918 Byte |
| Status | AC |
| Exec Time | 758 ms |
| Memory | 49712 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 400 / 400 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt |
| All | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_rnd_00.txt, 01_rnd_01.txt, 01_rnd_02.txt, 01_rnd_03.txt, 01_rnd_04.txt, 01_rnd_05.txt, 01_rnd_06.txt, 01_rnd_07.txt, 01_rnd_08.txt, 02_one_00.txt, 02_one_01.txt, 02_one_02.txt, 02_one_03.txt, 02_one_04.txt, 02_one_05.txt, 02_one_06.txt, 02_one_07.txt, 02_one_08.txt, 02_one_09.txt, 02_one_10.txt, 02_one_11.txt, 02_one_12.txt, 02_one_13.txt, 03_two_00.txt, 03_two_01.txt, 03_two_02.txt, 03_two_03.txt, 03_two_04.txt, 03_two_05.txt, 03_two_06.txt, 03_two_07.txt, 03_two_08.txt, 03_two_09.txt, 03_two_10.txt, 03_two_11.txt, 04_many_00.txt, 04_many_01.txt, 04_many_02.txt, 04_many_03.txt, 04_many_04.txt, 04_many_05.txt, 04_many_06.txt, 04_many_07.txt, 04_many_08.txt, 04_many_09.txt, 04_many_10.txt, 04_many_11.txt, 05_hand_00.txt, 05_hand_01.txt, 99_hack_00.txt, 99_hack_01.txt, 99_hack_02.txt, 99_hack_03.txt, 99_hack_04.txt, 99_hack_05.txt, 99_hack_06.txt, 99_hack_07.txt, 99_hack_08.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00_sample_00.txt | AC | 19 ms | 9144 KiB |
| 00_sample_01.txt | AC | 23 ms | 9316 KiB |
| 00_sample_02.txt | AC | 26 ms | 9244 KiB |
| 01_rnd_00.txt | AC | 21 ms | 9284 KiB |
| 01_rnd_01.txt | AC | 19 ms | 9248 KiB |
| 01_rnd_02.txt | AC | 458 ms | 9168 KiB |
| 01_rnd_03.txt | AC | 21 ms | 9344 KiB |
| 01_rnd_04.txt | AC | 21 ms | 9460 KiB |
| 01_rnd_05.txt | AC | 590 ms | 9292 KiB |
| 01_rnd_06.txt | AC | 146 ms | 49704 KiB |
| 01_rnd_07.txt | AC | 147 ms | 49712 KiB |
| 01_rnd_08.txt | AC | 758 ms | 24528 KiB |
| 02_one_00.txt | AC | 22 ms | 9148 KiB |
| 02_one_01.txt | AC | 19 ms | 9380 KiB |
| 02_one_02.txt | AC | 19 ms | 9148 KiB |
| 02_one_03.txt | AC | 20 ms | 9248 KiB |
| 02_one_04.txt | AC | 26 ms | 9236 KiB |
| 02_one_05.txt | AC | 24 ms | 9144 KiB |
| 02_one_06.txt | AC | 20 ms | 9312 KiB |
| 02_one_07.txt | AC | 665 ms | 29112 KiB |
| 02_one_08.txt | AC | 672 ms | 28936 KiB |
| 02_one_09.txt | AC | 675 ms | 29292 KiB |
| 02_one_10.txt | AC | 670 ms | 29208 KiB |
| 02_one_11.txt | AC | 675 ms | 29000 KiB |
| 02_one_12.txt | AC | 672 ms | 29032 KiB |
| 02_one_13.txt | AC | 672 ms | 29224 KiB |
| 03_two_00.txt | AC | 687 ms | 29008 KiB |
| 03_two_01.txt | AC | 688 ms | 29204 KiB |
| 03_two_02.txt | AC | 682 ms | 29212 KiB |
| 03_two_03.txt | AC | 673 ms | 29116 KiB |
| 03_two_04.txt | AC | 671 ms | 29228 KiB |
| 03_two_05.txt | AC | 669 ms | 28904 KiB |
| 03_two_06.txt | AC | 664 ms | 29100 KiB |
| 03_two_07.txt | AC | 672 ms | 29148 KiB |
| 03_two_08.txt | AC | 668 ms | 29180 KiB |
| 03_two_09.txt | AC | 674 ms | 29104 KiB |
| 03_two_10.txt | AC | 667 ms | 29224 KiB |
| 03_two_11.txt | AC | 674 ms | 28844 KiB |
| 04_many_00.txt | AC | 440 ms | 35816 KiB |
| 04_many_01.txt | AC | 443 ms | 35628 KiB |
| 04_many_02.txt | AC | 445 ms | 35732 KiB |
| 04_many_03.txt | AC | 441 ms | 35840 KiB |
| 04_many_04.txt | AC | 667 ms | 29164 KiB |
| 04_many_05.txt | AC | 667 ms | 28868 KiB |
| 04_many_06.txt | AC | 670 ms | 29120 KiB |
| 04_many_07.txt | AC | 675 ms | 29020 KiB |
| 04_many_08.txt | AC | 627 ms | 27788 KiB |
| 04_many_09.txt | AC | 629 ms | 27924 KiB |
| 04_many_10.txt | AC | 628 ms | 27796 KiB |
| 04_many_11.txt | AC | 636 ms | 27924 KiB |
| 05_hand_00.txt | AC | 22 ms | 9156 KiB |
| 05_hand_01.txt | AC | 699 ms | 20436 KiB |
| 99_hack_00.txt | AC | 26 ms | 9312 KiB |
| 99_hack_01.txt | AC | 19 ms | 9248 KiB |
| 99_hack_02.txt | AC | 23 ms | 9408 KiB |
| 99_hack_03.txt | AC | 24 ms | 9240 KiB |
| 99_hack_04.txt | AC | 21 ms | 9380 KiB |
| 99_hack_05.txt | AC | 20 ms | 9384 KiB |
| 99_hack_06.txt | AC | 20 ms | 9284 KiB |
| 99_hack_07.txt | AC | 20 ms | 9248 KiB |
| 99_hack_08.txt | AC | 20 ms | 9344 KiB |