結果
| 問題 |
No.2321 Continuous Flip
|
| コンテスト | |
| ユーザー |
amentorimaru
|
| 提出日時 | 2023-02-22 01:38:22 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 1,045 ms / 2,000 ms |
| コード長 | 1,146 bytes |
| コンパイル時間 | 301 ms |
| コンパイル使用メモリ | 82,432 KB |
| 実行使用メモリ | 160,592 KB |
| 最終ジャッジ日時 | 2024-12-28 03:52:17 |
| 合計ジャッジ時間 | 30,491 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 30 |
ソースコード
import sys
import heapq
input = sys.stdin.readline
def read_values(): return map(int, input().split())
def read_index(): return map(lambda x: int(x) - 1, input().split())
def read_list(): return list(read_values())
class Dijkstra:
def __init__(self,n):
self.dist=[int(1e18)]*n
self.g = [list() for _ in range(n)]
def add(self,u,v,c):
self.g[u].append((v,c))
def calc(self,s):
self.dist[s]=0
q = [(0,s)]
while(len(q)>0):
d,v0 = heapq.heappop(q)
if(d>self.dist[v0]):continue
for (v1,c) in self.g[v0]:
if(self.dist[v1]<=d+c):continue
self.dist[v1]=d+c
heapq.heappush(q,(self.dist[v1],v1))
def main():
n,m,c=read_values()
a=read_list()
l=[0]*m
r=[0]*m
for i in range(m):
l[i],r[i]=read_values()
dj=Dijkstra(n+1)
for i in range(n):
dj.add(i+0,i+1,a[i])
dj.add(i+1,i+0,a[i])
for i in range(m):
dj.add(l[i]-1,r[i],c)
dj.add(r[i],l[i]-1,c)
dj.calc(0)
print(sum(a)-dj.dist[-1])
if __name__ == "__main__":
main()
amentorimaru