Submission #1320543

#TimeUsernameProblemLanguageResultExecution timeMemory
1320543asafeRobot (JOI21_ho_t4)C++20
0 / 100
182 ms43380 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define vi vector<int> #define pii pair<int,int> #define vii vector<pair<int,int>> #define vll vector<long long> #define pb push_back #define pll pair<long long ,long long> #define pf push_front #define ql cout<<endl; #define f first #define s second #define int ll const ll inf=1e18; const int maxn= 1e5+5; int n,m; vector<tuple<int,int,int>> g[maxn]; unordered_map<int,int> neighbour[maxn]; int32_t main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin>>n>>m; for(int i=0;i<m;i++){ int a,b,c,d; cin>>a>>b>>c>>d; g[a].pb({b,c,d}); g[b].pb({a,c,d}); neighbour[a][c]++; neighbour[b][c]++; } priority_queue<pii,vii,greater<pii>>q; vi dist(n+1,inf); vi bt(n+1,0); q.push({0,1}); dist[1]=0; while(!q.empty()){ auto[du,u]=q.top(); q.pop(); if(bt[u])continue; bt[u]=1; for(auto[viz,color,price] : g[u]){ int d=(neighbour[u][color]>1 ? price : 0); if(dist[viz]>du+d){ q.push({du+d,viz}); dist[viz]=du+d; } } } cout<<(dist[n]==inf ? -1 : dist[n]); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...