제출 #103874

#제출 시각아이디문제언어결과실행 시간메모리
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...