Submission #103874

#TimeUsernameProblemLanguageResultExecution timeMemory
103874tduong0806Jakarta Skyscrapers (APIO15_skyscraper)C++14
57 / 100
1070 ms51060 KiB
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define forinc(i,a,b) for(int i=a;i<=b;++i)
#define fordec(i,a,b) for(int i=a;i>=b;--i)
#define forv(a,b) for(auto &a:b)
#define pb push_back
#define pii pair<int,int>
#define fi first
#define se second
#define all(a) a.begin(),a.end()
#define reset(f,x) memset(f,x,sizeof(f))
#define bit(x,i) ((x>>(i-1))&1)
#define onbit(x,i) (x|(1<<(i-1)))
#define offbit(x,i) (x&~(1<<(i-1)))
#define read2(a,b) read(a),read(b)
#define read3(a,b,c) read(a),read(b),read(c)
const int N=30100;
int n,m,a[N],v[N];
vector<int> ke[N];
unordered_map<int,int> f[N];
queue<pii> q;
void Push(int i,int p,int c)
{
    if(i-p>=0&&!f[i-p][p]) f[i-p][p]=c+1,q.push({i-p,p});
    if(i+p<=n&&!f[i+p][p]) f[i+p][p]=c+1,q.push({i+p,p});
}
void BFS()
{
    int s=v[1];
    forv(u,ke[s]) if(!f[s][u]) f[s][u]=1,q.push({s,u});
    while(!q.empty())
    {
        pii u=q.front();q.pop();
        int c=f[u.fi][u.se];
        if(u.fi==v[2]) {cout<<c-1;exit(0);}
        Push(u.fi,u.se,c);
        forv(v,ke[u.fi]) Push(u.fi,v,c);
    }
    cout<<-1;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    //freopen("JAKARTA.inp","r",stdin);
    cin>>n>>m;
    forinc(i,1,m)
    {
        int p;
        cin>>v[i]>>p;
        ke[v[i]].pb(p);
    }
    BFS();
}
#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...