제출 #1114326

#제출 시각아이디문제언어결과실행 시간메모리
1114326Dan4LifeRobot (JOI21_ho_t4)C++17
0 / 100
374 ms49028 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define sz(a) (int)a.size() #define all(a) begin(a),end(a) #define int long long using ar2 = array<int,2>; using ar3 = array<int,3>; const int N = (int)2e5+10; const int LINF = (int)2e18; int n, m, dis[N]; vector<ar3> adj[N]; map<int,int> node[N]; int dijkstra(){ priority_queue<ar2,vector<ar2>,greater<ar2>> pq; fill(dis,dis+n+1,LINF); dis[1]=0; pq.push({0,1}); while(sz(pq)){ auto [D,a] = pq.top(); pq.pop(); if(D!=dis[a]) continue; for(auto [b,c,p] : adj[a]){ int w = min(p,node[a][c]-p); if(dis[b]>dis[a]+w){ dis[b]=dis[a]+w; pq.push({dis[b],b}); } } } if(dis[n]==LINF) dis[n]=-1; return dis[n]; } int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(0); cin >> n >> m; for(int i = 1; i <= m; i++){ int a,b,c,d; cin >> a >> b >> c >> d; adj[a].pb({b,c,d}); adj[b].pb({a,c,d}); node[a][c]+=d; node[b][c]+=d; } cout << dijkstra() << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...