Submission #22005

#TimeUsernameProblemLanguageResultExecution timeMemory
22005mohammad_kilaniJakarta Skyscrapers (APIO15_skyscraper)C++14
57 / 100
49 ms22368 KiB
#include<bits/stdc++.h>
using namespace std;
const int N = 2001;
bool vis[N][N];
int cost[N][N];
int n,m;
vector<vector<int> > g;

int BFS(int s,int e){
    queue<pair<int,int> > q;
    q.push(make_pair(s,g[s][0]));
    vis[s][0] = true;
    while(!q.empty()){
        int node = q.front().first;
        int jump = q.front().second;
        q.pop();
        if(node == e)
            return cost[node][jump];
        int si = g[node].size();
        for(int i=0;i<=si;i++){
            int newjump;
            if(i == si)
                newjump = jump;
            else
                newjump = g[node][i];
            int newnode = node+newjump;
            if(newnode >= 0 && newnode < n && !vis[newnode][newjump]){
                vis[newnode][newjump] = true;
                cost[newnode][newjump] = cost[node][jump]+1;
                q.push(make_pair(newnode,newjump));
            }
            newnode = node-newjump;
            if(newnode >= 0 && newnode < n && !vis[newnode][newjump]){
                vis[newnode][newjump] = true;
                cost[newnode][newjump] = cost[node][jump]+1;
                q.push(make_pair(newnode,newjump));
            }
        }
    }
    return -1;
}

int main(){
    //freopen("in.txt","r",stdin);
    scanf("%d%d",&n,&m);
    g.resize(n+2);
    int s,e;
    for(int i=0;i<m;i++){
        int b,p;
        scanf("%d%d",&b,&p);
        g[b].push_back(p);
        if(i == 0){
            s = b;
        }
        if(i == 1)
            e = b;
    }
    cout << BFS(s,e);
    return 0;
}

Compilation message (stderr)

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:45:24: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d",&n,&m);
                        ^
skyscraper.cpp:50:28: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d",&b,&p);
                            ^
skyscraper.cpp:58:20: warning: 'e' may be used uninitialized in this function [-Wmaybe-uninitialized]
     cout << BFS(s,e);
                    ^
skyscraper.cpp:58:20: warning: 's' may be used uninitialized in this function [-Wmaybe-uninitialized]
#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...