Submission #457698

#TimeUsernameProblemLanguageResultExecution timeMemory
457698elgamalsalmanJakarta Skyscrapers (APIO15_skyscraper)C++14
10 / 100
1 ms460 KiB
#include <bits/stdc++.h> using namespace std; #define fi first #define se second #define ww first #define vv second typedef long long ll; typedef pair<ll, ll> llll; typedef pair<int, int> ii; typedef pair<int, ii> iii; typedef vector<int> vi; typedef vector<ii> vii; typedef vector<vi> vvi; typedef vector<vii> vvii; int N, M, b[30'050], p[30'050]; ll sssp[30'050]; vvi dogesAt; vvii adj; bitset<30'050> visited; void bfs(int source) { memset(sssp, -1, sizeof sssp); queue<iii> q; q.push({b[source], {p[source], 0}}); q.push({b[source], {-p[source], 0}}); sssp[source] = 0; visited[source] = 1; while (!q.empty()) { iii u = q.front(); q.pop(); for (int doge : dogesAt[u.fi]) if (!visited[doge]) { sssp[doge] = u.se.se; visited[doge] = 1; if (doge == 1) return; q.push({u.fi, {p[doge], u.se.se}}); q.push({u.fi, {-p[doge], u.se.se}}); } int newPos = u.fi + u.se.fi; if (newPos >= 0 && newPos < N) q.push({newPos, {u.se.fi, u.se.se + 1}}); } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> N >> M; dogesAt.assign(N + 20, vi()); adj.assign(M + 20, vii()); for (int i = 0; i < M; i++) { cin >> b[i] >> p[i]; dogesAt[b[i]].push_back(i); } //cerr << "// adj:-\n"; //for (int u = 0; u < M; u++) { // cerr << "// " << u << " :"; // for (ii v : adj[u]) cerr << " {" << v.fi << ", " << v.se << "}"; // cerr << '\n'; //} //cerr << '\n'; bfs(0); //cerr << "// sssp :"; //for (int i = 0; i < M; i++) cerr << ' ' << sssp[i]; //cerr << '\n'; cout << sssp[1] << '\n'; }
#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...