結果
| 問題 |
No.812 Change of Class
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-03-26 15:50:08 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 1,149 ms / 4,000 ms |
| コード長 | 1,515 bytes |
| コンパイル時間 | 185 ms |
| コンパイル使用メモリ | 82,716 KB |
| 実行使用メモリ | 123,936 KB |
| 最終ジャッジ日時 | 2025-03-26 15:51:10 |
| 合計ジャッジ時間 | 22,145 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 60 |
ソースコード
import sys
from collections import deque
def main():
input = sys.stdin.read().split()
ptr = 0
N = int(input[ptr])
ptr += 1
M = int(input[ptr])
ptr += 1
adj = [[] for _ in range(N+1)]
for _ in range(M):
p = int(input[ptr])
ptr += 1
q = int(input[ptr])
ptr += 1
adj[p].append(q)
adj[q].append(p)
Q = int(input[ptr])
ptr += 1
queries = []
for _ in range(Q):
queries.append(int(input[ptr]))
ptr += 1
for A in queries:
if N == 1:
print(0, 0)
continue
visited = [False] * (N + 1)
visited[A] = True
queue = deque()
queue.append((A, 0))
component_size = 1
d_max = 0
while queue:
node, dist = queue.popleft()
if dist > d_max:
d_max = dist
for neighbor in adj[node]:
if not visited[neighbor]:
visited[neighbor] = True
component_size += 1
queue.append((neighbor, dist + 1))
if component_size == 1:
print(0, 0)
else:
if d_max == 0:
days = 0
else:
days = 0
current = 1
while current < d_max:
days += 1
current *= 2
print(component_size - 1, days)
if __name__ == "__main__":
main()
lam6er