제출 #207780

#제출 시각아이디문제언어결과실행 시간메모리
207780mohamedsobhi777Jakarta Skyscrapers (APIO15_skyscraper)C++14
36 / 100
1083 ms204792 KiB
#include<bits/stdc++.h> using namespace std ; const int N = 3e5 + 7 ; int n , m ; int b[N] , p[N] , d[N]; set<pair<int , int > > adj[N] ; int dijkstra() { memset(d , -1 , sizeof d) ; priority_queue<pair<int , int > > q ; q.push({0 , b[0]}) ; d[ b[0] ] = 0; while(q.size()) { int node = q .top().second ; int dist = -q.top().first ; q.pop(); for(auto u : adj[node]) { if(d[u.second]==-1 || dist + u.first < d[u.second]) { d[u.second] = dist + u.first ; q.push({-d[u.second] , u.second}) ; } } } return d[ b[1] ] ; } int main() { // freopen("in.in" , "r", stdin) ; cin>>n>>m ; for(int i = 0 ; i < N ;i++) b[i] = n; for(int i= 0 ; i < m ; i++) { int A , B; cin>>A>>B ; b[ i ] = A; if(!B) continue; for(int j = 0 ; j < n ; j++) { if(A==j) continue; if(j==A) continue; if(abs(A-j)%B==0) { adj[A].insert({ abs(A-j)/B , j}); } } } cout<<dijkstra(); 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...