結果
| 問題 |
No.298 話の伝達
|
| コンテスト | |
| ユーザー |
gew1fw
|
| 提出日時 | 2025-06-12 16:37:08 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 725 bytes |
| コンパイル時間 | 242 ms |
| コンパイル使用メモリ | 82,816 KB |
| 実行使用メモリ | 59,520 KB |
| 最終ジャッジ日時 | 2025-06-12 16:37:10 |
| 合計ジャッジ時間 | 2,125 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| 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]))
gew1fw