Submission #207780

#TimeUsernameProblemLanguageResultExecution timeMemory
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...