Submission #1275728

#TimeUsernameProblemLanguageResultExecution timeMemory
1275728mhn_neekJakarta Skyscrapers (APIO15_skyscraper)C++20
36 / 100
1099 ms129784 KiB
// IN THE NAME OF GOD #include<bits/stdc++.h> using namespace std; typedef long long int lli; typedef pair<lli,lli> pii; typedef vector<lli> ve; typedef vector<pii> vp; const lli N = 5e5 + 100; const lli INF = 1e18; const lli mod = 1e9 + 7; #define PB push_back #define MP make_pair #define fi first #define se second #define FOR(x,y) for(lli x = 0; x < y; x ++) #define FORS(x,y) for(lli x = 1; x <= y; x ++) #define all(x) x.begin(),x.end() #define lb lower_bound #define ub upper_bound #define debug(x) cerr<<(#x)<<" "<<x<<endl lli n,m; lli B[N],P[N]; vp adj[N]; lli dis[N]; int main(){ ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0); cin>>n>>m; FOR(i,m){ cin>>B[i]>>P[i]; } FOR(a,m){ FOR(b,m){ lli fa = abs(B[b]-B[a]); if(a != b && fa%P[a] == 0){ adj[a].PB(MP(b,fa/P[a])); adj[b].PB(MP(b,2*(fa/P[a]) )); } } } FOR(i,m) dis[i] = INF; priority_queue<pii,vp,greater<pii>> pq; pq.push(MP(0,0)); dis[0] = 0; while(pq.size()){ lli v = pq.top().se; lli D = pq.top().fi; pq.pop(); if(D != dis[v])continue; for(auto [u,w] : adj[v]){ if(dis[u] > dis[v] + w){ dis[u] = dis[v] + w; pq.push(MP(dis[u],u)); } } } if(dis[1] == INF)dis[1] = -1; cout<<dis[1]<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...