結果
問題 |
No.812 Change of Class
|
ユーザー |
|
提出日時 | 2019-08-11 17:14:48 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,091 ms / 4,000 ms |
コード長 | 1,062 bytes |
コンパイル時間 | 166 ms |
コンパイル使用メモリ | 82,556 KB |
実行使用メモリ | 198,312 KB |
最終ジャッジ日時 | 2024-06-12 21:28:24 |
合計ジャッジ時間 | 24,526 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 60 |
ソースコード
from math import ceil, log from collections import defaultdict, deque import sys input = sys.stdin.readline #辺の重みが1なのでBFSでOK def bfs(start): queue = deque([]) queue.append(start) distance = [None] + [-1] * N distance[start] = 0 while len(queue) > 0: current_node = queue.popleft() for next_node in adj_dict[current_node]: if distance[next_node] == -1: distance[next_node] = distance[current_node] + 1 queue.append(next_node) return distance N, M = map(int, input().split()) adj_dict = defaultdict(list) for _ in range(M): pi, qi = map(int, input().split()) adj_dict[pi].append(qi) adj_dict[qi].append(pi) Q = int(input()) for _ in range(Q): Ai = int(input()) distance = bfs(Ai) ans1 = 0 for distance_i in distance[1:]: if distance_i > 0: ans1 += 1 m = max(distance[1:]) if m == 0: ans2 = 0 else: ans2 = ceil(log(m, 2)) print(ans1, ans2)