제출 #1167118

#제출 시각아이디문제언어결과실행 시간메모리
1167118AMnuJakarta Skyscrapers (APIO15_skyscraper)C++20
10 / 100
1 ms840 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define fi first #define se second typedef pair<int,int> pii; const int MAXN = 3e4; bitset <30000> bs[MAXN]; int main(){ ll n, m; cin >> n >> m; vector<ll> b(m + 5), p(m + 5); for(int i = 1; i <= m; i++) cin >> b[i] >> p[i]; vector<ll> adj[n + 5]; for(int i = 1; i <= m; i++){ adj[b[i]].push_back(p[i]); } vector<ll> pq[2]; pq[0].push_back(b[1]); for(int dist=0;!pq[dist&1].empty();dist++){ for (auto idx : pq[dist&1]) { if (idx == b[2]) { cout << dist << "\n"; return 0; } for(auto i : adj[idx]){ // cout << idx << " " << i << "\n"; bs[idx][i] = 1; if(idx+i < n && !bs[idx+i][i]){ bs[idx+i][i] = 1; pq[dist&1^1].push_back(idx+i); adj[idx+i].push_back(i); } if(idx-i >= 0 && !bs[idx-i][i]){ bs[idx-i][i] = 1; pq[dist&1^1].push_back(idx-i); adj[idx-i].push_back(i); } } adj[idx].clear(); } pq[dist&1].clear(); } cout << "-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...