Submission #124210

#TimeUsernameProblemLanguageResultExecution timeMemory
124210youssefbou62Jakarta Skyscrapers (APIO15_skyscraper)C++14
0 / 100
2 ms380 KiB
#include  <bits/stdc++.h>

using namespace std;

#define mp make_pair
#define fi first
#define se second
#define all(v) v.begin(),v.end()
#define allarr(a) a , a + n
#define ll long long
#define ull unsigned long long 
#define pb push_back
#define fastio ios_base::sync_with_stdio(false) ; cin.tie(NULL); cout.tie(NULL)
typedef pair<int, int> pi;
typedef pair<ll,ll> pll; 
typedef pair<int,pi> trp ;
typedef vector<pi> vpi;
typedef vector<pll> vpll ;
ll ab (ll x ) { return (x>0?x:-x); }
const int N = 3005 ; 
int P[N] , B[N] ; 
int dist[N] , n , m ; 
vpi  here [N] ;
bool visited[ N ][ N ] ; 
int solve (){
    queue<pi> q ; 
    int place , dog ; 
    
    q.push({B[0],0}) ; 

    while ( !q.empty() ){
        place = q.front().fi ; 
        dog = q.front().se ;
        q.pop();  
        if( place == B[1] ){
            return dist[1] ; 
        }
    //    cerr << place << " " << dog << " " << dist[place] << endl; 
        visited[place][P[dog]] = 1 ; 
        int plus = place + P[dog] , minus = place - P[dog] ; 
        if( plus < n && !visited[plus][P[dog]])
            q.push( { plus , dog } ) , dist[plus] = dist[place]+1 ;
        if( minus >= 0 && !visited[minus][P[dog]])
            q.push( { minus , dog } ) , dist[minus] = dist[place] + 1 ; 
        for( pi v : here[place] ){
            // cout << v.fi << " " << v.se << endl;
            if( !visited[v.fi][P[v.se]] )
                q.push( {v.fi , v.se } ) ; 
        }
    }
    return -1 ; 
}

void input(){
    // ifstream cin ("in.in") ; 
    cin >> n >> m ; 
    for(int i = 0 ; i < m  ; i++ ){
        cin >> B[i] >> P[i] ; 
        if(i)here[B[i]].pb({B[i] , i}) ; 
    }
}
int main(){
    input() ; 
    cout << solve ( ) << 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...