結果
問題 | No.848 なかよし旅行 |
ユーザー |
![]() |
提出日時 | 2024-04-07 21:29:10 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
TLE
|
実行時間 | - |
コード長 | 2,470 bytes |
コンパイル時間 | 232 ms |
コンパイル使用メモリ | 12,800 KB |
実行使用メモリ | 57,408 KB |
最終ジャッジ日時 | 2024-10-01 04:45:29 |
合計ジャッジ時間 | 13,030 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | -- * 4 |
other | AC * 12 TLE * 5 -- * 9 |
ソースコード
import heapqclass Graph:def __init__(self,V,edges=None,graph=None,directed=False,weighted=False,inf=float("inf")):self.V=Vself.directed=directedself.weighted=weightedself.inf=infif graph!=None:self.graph=graph"""self.edges=[]for i in range(self.V):if self.weighted:for j,d in self.graph[i]:if self.directed or not self.directed and i<=j:self.edges.append((i,j,d))else:for j in self.graph[i]:if self.directed or not self.directed and i<=j:self.edges.append((i,j))"""else:self.edges=edgesself.graph=[[] for i in range(self.V)]if weighted:for i,j,d in self.edges:self.graph[i].append((j,d))if not self.directed:self.graph[j].append((i,d))else:for i,j in self.edges:self.graph[i].append(j)if not self.directed:self.graph[j].append(i)def Dijkstra(self,s,route_restoration=False):dist=[self.inf]*self.Vdist[s]=0queue=[(0,s)]if route_restoration:parents=[None]*self.Vwhile queue:dx,x=heapq.heappop(queue)if dist[x]<dx:continuefor y,dy in self.graph[x]:if dist[y]>dx+dy:dist[y]=dx+dyif route_restoration:parents[y]=xheapq.heappush(queue,(dist[y],y))if route_restoration:return dist,parentselse:return distN,M,P,Q,T=map(int,input().split())edges=[]for m in range(M):a,b,c=map(int,input().split())a-=1;b-=1edges.append((a,b,c))G=Graph(N,edges=edges,weighted=True)P-=1;Q-=1dist0=G.Dijkstra(0)distP=G.Dijkstra(P)distQ=G.Dijkstra(Q)if dist0[P]+distP[Q]+distQ[0]<=T:ans=Telse:ans=-1for x in range(N):for y in range(N):dP=dist0[x]+distP[x]+distP[y]+dist0[y]dQ=dist0[x]+distQ[x]+distQ[y]+dist0[y]if dP<=T and dQ<=T:ans=max(ans,T-max(distP[x]+distP[y],distQ[x]+distQ[y]))print(ans)