제출 #804581

#제출 시각아이디문제언어결과실행 시간메모리
804581KLPPRobot (JOI21_ho_t4)C++14
0 / 100
503 ms35560 KiB
#include<bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; typedef long long int lld; typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> ordered_set; #define rep(i,a,b) for(int i=a;i<b;i++) #define trav(a,v) for(auto a:v) lld inp[1000000][4]; const lld INF=1e18; void solve(){ int n,m; cin>>n>>m; map<pair<int,int>,lld> M; rep(i,0,m){ rep(j,0,4)cin>>inp[i][j]; inp[i][0]--; inp[i][1]--; M[{inp[i][0],inp[i][2]}]+=inp[i][3]; M[{inp[i][1],inp[i][2]}]+=inp[i][3]; } vector<vector<pair<int,lld> > >nei(n); rep(i,0,m){ nei[inp[i][0]].push_back({inp[i][1],min(inp[i][3],M[{inp[i][0],inp[i][2]}]-inp[i][3])}); nei[inp[i][1]].push_back({inp[i][0],min(inp[i][3],M[{inp[i][1],inp[i][2]}]-inp[i][3])}); } vector<lld> dist(n,INF); dist[0]=0; priority_queue<pair<lld,int> >pq; pq.push({0,0}); while(!pq.empty()){ lld d=-pq.top().first; int v=pq.top().second; pq.pop(); if(d>dist[v])continue; trav(u,nei[v]){ if(dist[u.first]>u.second+d){ dist[u.first]=u.second+d; pq.push({-dist[u.first],u.first}); } } } if(dist[n-1]<INF)cout<<dist[n-1]<<"\n"; else cout<<"-1\n"; } int main(){ ios::sync_with_stdio(0); cin.tie(0); int tt=1; //cin>>tt; while(tt--){ solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...