結果
| 問題 |
No.298 話の伝達
|
| コンテスト | |
| ユーザー |
gew1fw
|
| 提出日時 | 2025-06-12 16:35:39 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,173 bytes |
| コンパイル時間 | 297 ms |
| コンパイル使用メモリ | 82,480 KB |
| 実行使用メモリ | 56,368 KB |
| 最終ジャッジ日時 | 2025-06-12 16:35:41 |
| 合計ジャッジ時間 | 2,159 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 10 WA * 11 |
ソースコード
from collections import deque
def main():
import sys
input = sys.stdin.read
data = input().split()
idx = 0
N = int(data[idx])
idx += 1
M = int(data[idx])
idx += 1
outgoing = [[] for _ in range(N)]
incoming = [[] for _ in range(N)]
in_degree = [0] * N
for _ in range(M):
A = int(data[idx])
idx += 1
B = int(data[idx])
idx += 1
C = int(data[idx])
idx += 1
outgoing[A].append((B, C))
incoming[B].append((A, C))
in_degree[B] += 1
# Kahn's algorithm for topological sort
q = deque()
for i in range(N):
if in_degree[i] == 0:
q.append(i)
top_order = []
while q:
u = q.popleft()
top_order.append(u)
for (v, c) in outgoing[u]:
in_degree[v] -= 1
if in_degree[v] == 0:
q.append(v)
p = [0.0] * N
p[0] = 1.0
for j in top_order:
for (i, c) in incoming[j]:
prob = p[i] * (c / 100.0) * (1 - p[j])
p[j] += prob
print("{0:.10f}".format(p[N-1]))
if __name__ == "__main__":
main()
gew1fw