Submission #928063

#TimeUsernameProblemLanguageResultExecution timeMemory
928063OAleksaJakarta Skyscrapers (APIO15_skyscraper)C++14
10 / 100
1 ms1372 KiB
#include <bits/stdc++.h>
using namespace std;
#define f first
#define s second
const int N = 30069;
const int inf = 1e9;
int n, m, a[N], b[N], dis[N], was[N], o[N];
vector<int> g[N];
signed main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int tt = 1;
  //cin >> tt;
  while (tt--) {
  	cin >> n >> m;
  	for (int i = 1;i <= m;i++) {
  		cin >> a[i] >> b[i], ++a[i];
  		g[a[i]].push_back(i);
  	}
  	for (int i = 1;i <= n;i++)
  		dis[i] = inf;
  	vector<int> vis;
		vector<int> dogos;
		dogos.push_back(1);
		dis[a[1]] = 0;
  	while (dis[a[2]] == inf && !dogos.empty()) {
  		auto v = dogos.back();
  		dogos.pop_back();
  		for (int i = a[v], j = dis[a[v]];i <= n;i += b[v],j++) {
  			if (dis[i] == inf) {
  				dis[i] = j;
  				for (auto u : g[i]) 
  					dogos.push_back(u);
  			}
  		}
  		for (int i = a[v], j = dis[a[v]];i >= 1;i -= b[v],j++) {
  			if (dis[i] == inf) {
  				dis[i] = j;
  				for (auto u : g[i]) 
  					dogos.push_back(u);
  			}
  		}
  	}
  	if (dis[a[2]] == inf)
  		cout << -1 << '\n';
  	else
  		cout << dis[a[2]] << '\n';
  }
  return 0;
}
#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...