結果
問題 |
No.298 話の伝達
|
ユーザー |
![]() |
提出日時 | 2025-06-12 21:37:53 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 725 bytes |
コンパイル時間 | 224 ms |
コンパイル使用メモリ | 82,324 KB |
実行使用メモリ | 60,568 KB |
最終ジャッジ日時 | 2025-06-12 21:41:06 |
合計ジャッジ時間 | 1,920 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 10 WA * 11 |
ソースコード
n, m = map(int, input().split()) edges = [[] for _ in range(n)] for _ in range(m): a, b, c = map(int, input().split()) edges[b].append((a, c)) p = [0.0] * n p[0] = 1.0 epsilon = 1e-9 max_iter = 100000 for _ in range(max_iter): p_new = [0.0] * n p_new[0] = 1.0 for j in range(1, n): product = 1.0 for (a, c) in edges[j]: term = 1.0 - p[a] * (c / 100.0) product *= term p_new[j] = 1.0 - product max_diff = 0.0 for j in range(n): diff = abs(p[j] - p_new[j]) if diff > max_diff: max_diff = diff if max_diff < epsilon: p = p_new break else: p = p_new.copy() print("{0:.10f}".format(p[n-1]))