Submission #64787007
Source Code Expand
Copy
from collections import defaultdictN, M = map(int, input().split())graph = {}for i in range(N):graph[i] = []for i in range(M):a, b = map(int, input().split())graph[a-1].append(b-1)graph[b-1].append(a-1)flags = [0] * Nanswer = [0] * Nchouten = 0decreaseChotenPrepare = [0] * Nfor i in range(N-1,0,-1):if len(graph[i]) > 0:chouten += 1for j in graph[i]:flags[j] += 1if flags[j] == len(graph[j]):if j > i:chouten -= 1
from collections import defaultdict N, M = map(int, input().split()) graph = {} for i in range(N): graph[i] = [] for i in range(M): a, b = map(int, input().split()) graph[a-1].append(b-1) graph[b-1].append(a-1) flags = [0] * N answer = [0] * N chouten = 0 decreaseChotenPrepare = [0] * N for i in range(N-1,0,-1): if len(graph[i]) > 0: chouten += 1 for j in graph[i]: flags[j] += 1 if flags[j] == len(graph[j]): if j > i: chouten -= 1 else: decreaseChotenPrepare[j] += 1 chouten -= decreaseChotenPrepare[i] answer[i-1] = chouten 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()) uf = UnionFind(N) for i in range(N): for j in graph[i]: if j < i: uf.union(i, j) if uf.size(0) != i+1: answer[i] = -1 print(*answer)
Submission Info
Submission Time | |
---|---|
Task | E - Reachable Set |
User | kangping |
Language | Python (CPython 3.11.4) |
Score | 450 |
Code Size | 2151 Byte |
Status | AC |
Exec Time | 1347 ms |
Memory | 81892 KiB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 450 / 450 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt |
All | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt, 01_random_23.txt, 01_random_24.txt, 01_random_25.txt, 01_random_26.txt, 01_random_27.txt, 01_random_28.txt, 01_random_29.txt, 01_random_30.txt, 01_random_31.txt, 01_random_32.txt, 01_random_33.txt, 01_random_34.txt, 01_random_35.txt, 01_random_36.txt, 01_random_37.txt, 01_random_38.txt, 01_random_39.txt, 01_random_40.txt, 01_random_41.txt, 01_random_42.txt, 01_random_43.txt, 01_random_44.txt, 01_random_45.txt, 01_random_46.txt, 01_random_47.txt, 01_random_48.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00_sample_00.txt | AC | 12 ms | 9504 KiB |
00_sample_01.txt | AC | 12 ms | 9464 KiB |
00_sample_02.txt | AC | 11 ms | 9496 KiB |
00_sample_03.txt | AC | 12 ms | 9504 KiB |
01_random_04.txt | AC | 873 ms | 66764 KiB |
01_random_05.txt | AC | 700 ms | 68148 KiB |
01_random_06.txt | AC | 918 ms | 72896 KiB |
01_random_07.txt | AC | 833 ms | 71864 KiB |
01_random_08.txt | AC | 1347 ms | 79556 KiB |
01_random_09.txt | AC | 1188 ms | 80868 KiB |
01_random_10.txt | AC | 1314 ms | 80044 KiB |
01_random_11.txt | AC | 1253 ms | 81892 KiB |
01_random_12.txt | AC | 1308 ms | 79984 KiB |
01_random_13.txt | AC | 1282 ms | 80024 KiB |
01_random_14.txt | AC | 1294 ms | 79968 KiB |
01_random_15.txt | AC | 625 ms | 32708 KiB |
01_random_16.txt | AC | 204 ms | 34252 KiB |
01_random_17.txt | AC | 203 ms | 45444 KiB |
01_random_18.txt | AC | 40 ms | 14724 KiB |
01_random_19.txt | AC | 42 ms | 15104 KiB |
01_random_20.txt | AC | 394 ms | 20648 KiB |
01_random_21.txt | AC | 248 ms | 15840 KiB |
01_random_22.txt | AC | 64 ms | 10304 KiB |
01_random_23.txt | AC | 515 ms | 25612 KiB |
01_random_24.txt | AC | 497 ms | 25420 KiB |
01_random_25.txt | AC | 276 ms | 17660 KiB |
01_random_26.txt | AC | 1254 ms | 80804 KiB |
01_random_27.txt | AC | 1236 ms | 80084 KiB |
01_random_28.txt | AC | 1191 ms | 81812 KiB |
01_random_29.txt | AC | 1262 ms | 80320 KiB |
01_random_30.txt | AC | 1236 ms | 80820 KiB |
01_random_31.txt | AC | 1280 ms | 80080 KiB |
01_random_32.txt | AC | 1206 ms | 81816 KiB |
01_random_33.txt | AC | 1231 ms | 80232 KiB |
01_random_34.txt | AC | 1245 ms | 80812 KiB |
01_random_35.txt | AC | 1181 ms | 80048 KiB |
01_random_36.txt | AC | 1219 ms | 81872 KiB |
01_random_37.txt | AC | 1222 ms | 80404 KiB |
01_random_38.txt | AC | 12 ms | 9508 KiB |
01_random_39.txt | AC | 11 ms | 9484 KiB |
01_random_40.txt | AC | 12 ms | 9528 KiB |
01_random_41.txt | AC | 11 ms | 9428 KiB |
01_random_42.txt | AC | 11 ms | 9492 KiB |
01_random_43.txt | AC | 11 ms | 9488 KiB |
01_random_44.txt | AC | 11 ms | 9504 KiB |
01_random_45.txt | AC | 11 ms | 9500 KiB |
01_random_46.txt | AC | 11 ms | 9496 KiB |
01_random_47.txt | AC | 11 ms | 9432 KiB |
01_random_48.txt | AC | 11 ms | 9428 KiB |