This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<ll> vl ;
#define mp make_pair
#define pb push_back
#define f first
#define s second
#define all(v) (v).begin(),(v).end()
const int MOD = 1000000007;
const int N = 1000005;
const double PI =4*atan(1);
const double eps = 1e-7;
ll n,m;
ll x,y;
vl tab[N];
ll p[N];
ll b[N];
bool vis[N];
ll ans=0;
void bfs(ll u){
set<pair<ll,ll> > ss;
for(auto t:tab[u]){
ss.insert(mp(0,u));
}
pair<ll,ll> ras;
while(!ss.empty()){
ras=*ss.begin();
ss.erase(ss.begin());
if(ras.second==b[1]){
ans=ras.first;
return ;
}
vis[ras.s]=1;
for(auto t: tab[ras.s]){
ll x=b[t]-p[t];
ll cnt=1;
while(x>=0){
ss.insert(mp(ras.f+cnt,x));
cnt++;
x-=p[t];
}
x=b[t]+p[t];
cnt=1;
while(x<n){
ss.insert(mp(ras.f+cnt,x));
cnt++;
x+=p[t];
}
}
}
}
int main(){
ios::sync_with_stdio(0);
//freopen("easy.txt","r",stdin);
cin >> n >>m ;
for(int i=0;i<m;i++){
cin >> x >> y;
p[i]=y;
b[i]=x;
tab[x].pb(i);
}
bfs(b[0]);
cout << ans;
return 0;
}
Compilation message (stderr)
skyscraper.cpp: In function 'void bfs(ll)':
skyscraper.cpp:29:16: warning: unused variable 't' [-Wunused-variable]
for(auto t:tab[u]){
^
# | 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... |