結果
| 問題 |
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)