Submission #76829

#TimeUsernameProblemLanguageResultExecution timeMemory
76829vexJakarta Skyscrapers (APIO15_skyscraper)C++14
57 / 100
1078 ms3188 KiB
#include <bits/stdc++.h>
#define maxn 30005
#define pii pair<int,int>
using namespace std;

int n,m;
vector<int>p[maxn];
priority_queue<pii>pq;
int dis[maxn];
bool bio[maxn];

bool cmp(int x,int y)
{
    return x>y;
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    cin>>n>>m;
    int s;
    int e;
    for(int i=0;i<m;i++)
    {
        int x,y;
        cin>>x>>y;
        p[x].push_back(y);
        if(i==0)s=x;
        if(i==1)e=x;
    }

    if(e==s)
    {
        cout<<"0"<<endl;
        return 0;
    }

    for(int i=0;i<n;i++)
    {
        dis[i]=maxn*maxn+55;
        bio[i]=false;
    }
    pq.push({0,s});
    dis[s]=0;

    while(!pq.empty())
    {
        int v=pq.top().second;
        pq.pop();
      	if(v==e)
        {
          cout<<dis[e]<<endl;
          return 0;
        }
        if(bio[v])continue;
        bio[v]=true;

        for(auto x:p[v])
        {
            for(int i=v%x;i<n;i+=x)
            {
                if(dis[i]>dis[v]+(abs(i-v))/x)
                {
                    dis[i]=dis[v]+(abs(i-v))/x;
                    pq.push({-dis[i],i});
                }
            }
        }
    }

    if(dis[e]<maxn*maxn+1)cout<<dis[e]<<endl;
    else cout<<"-1"<<endl;
    return 0;
}

Compilation message (stderr)

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:53:8: warning: 'e' may be used uninitialized in this function [-Wmaybe-uninitialized]
        if(v==e)
        ^~
#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...