이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |