結果
| 問題 |
No.468 役に立つ競技プログラミング実践編
|
| コンテスト | |
| ユーザー |
rlangevin
|
| 提出日時 | 2023-12-20 12:25:32 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 561 ms / 2,000 ms |
| コード長 | 1,096 bytes |
| コンパイル時間 | 475 ms |
| コンパイル使用メモリ | 82,208 KB |
| 実行使用メモリ | 131,088 KB |
| 最終ジャッジ日時 | 2024-09-27 09:48:01 |
| 合計ジャッジ時間 | 10,287 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 31 |
| other | AC * 6 |
ソースコード
import sys
input = sys.stdin.readline
from collections import *
def topsort(G):
Q = deque()
N = len(G)
count = [0] * N
for u in range(N):
for v in G[u]:
count[v] += 1
for u in range(N):
if count[u] == 0:
Q.append(u)
anslst = deque()
while Q:
u = Q.pop()
anslst.append(u)
for v in G[u]:
count[v] -= 1
if count[v] == 0:
Q.append(v)
return list(anslst)
N, M = map(int, input().split())
G = [[] for i in range(N)]
GG = [[] for i in range(N)]
Gr = [[] for i in range(N)]
for i in range(M):
A, B, C = map(int, input().split())
G[A].append((B, C))
Gr[B].append((A, C))
GG[A].append(B)
A = topsort(GG)
inf = 10 ** 18
dp, dpr = [-inf] * N, [inf] * N
dp[0] = 0
for a in A:
for u, c in G[a]:
dp[u] = max(dp[u], dp[a] + c)
A.reverse()
dpr[-1] = dp[-1]
for a in A:
for u, c in Gr[a]:
dpr[u] = min(dpr[u], dpr[a] - c)
cnt = 0
for i in range(N):
cnt += int(dp[i]!=dpr[i])
ans = str(cnt) + "/" + str(N)
print(dp[-1], ans)
rlangevin