제출 #409344

#제출 시각아이디문제언어결과실행 시간메모리
409344victoriadJakarta Skyscrapers (APIO15_skyscraper)C++14
57 / 100
1016 ms2760 KiB
#include <cmath> #include <cstdio> #include <vector> #include <iostream> #include <algorithm> #include <utility> #include <queue> #include <map> #include <iomanip> #include <stack> #include <fstream> using namespace std; int menor(vector<vector<int> >&mov,int z,int u){ int n=mov.size(); vector<int>d(n,1e9); priority_queue<pair<int,int > >pq; pq.push(make_pair(0,z)); d[z]=0; while(!pq.empty()){ int t=pq.top().first; t*=-1; int nt=pq.top().second; if(t>=d[u])break; pq.pop(); if(t>d[nt])continue; if(nt!=u){ for(int c:mov[nt]){ int x=nt+c,o=1+d[nt]; while(x<=n-1){ if(o<d[x]){ d[x]=o; pq.push(make_pair(-d[x],x)); } if(x==u)x=1e9; x+=c; o++; } int a=nt-c,u=1+d[nt]; while(a>=0){ if(u<d[a]){ d[a]=u; pq.push(make_pair(-d[a],a)); } if(a==u)x=-1; u++; a-=c; } } } } if(d[u]==1e9){ return -1; } else{ return d[u]; } } int main(){ ios::sync_with_stdio(false); cin.tie(NULL); int n,m,a; cin>>n>>m; vector<vector<int> >mov(n); vector<int>g(m); for(int i=0;i<m;i++){ cin>>g[i]>>a; mov[g[i]].push_back(a); } cout<<menor(mov,g[0],g[1]); return 0; }
#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...