제출 #655355

#제출 시각아이디문제언어결과실행 시간메모리
655355QAQTATRailway Trip 2 (JOI22_ho_t4)C++17
8 / 100
161 ms4464 KiB
#include <bits/stdc++.h> using namespace std; #pragma GCC optimize("Ofast") #define Yungyaorz ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define pii pair <int, int> #define pll pair <long long int, long long int> #define all(x) (x).begin(), (x).end() #define pb push_back #define F first #define S second #define debug(x) cerr << #x << '=' << x << '\n' typedef long long ll; const int N = 305; set <int> graph[N]; signed main() { Yungyaorz int n, k, m; cin >> n >> k >> m; for(int i = 0; i < m; ++i) { int a, b; cin >> a >> b; if(a > b) { for(int u = a; u >= max(a - k + 1, b + 1); --u) { for(int v = u - 1; v >= b; --v) { graph[u].insert(v); } } } else { // a < b for(int u = a; u <= min(a + k - 1, b - 1); ++u) { for(int v = u + 1; v <= b; ++v) { graph[u].insert(v); } } } } int q; cin >> q; while(q--) { int s, t; cin >> s >> t; vector <int> dis(n + 1); queue <int> que; que.push(s); dis[s] = 0; bool flag = false; while(que.size()) { int u = que.front(); que.pop(); for(auto v : graph[u]) { if(dis[v]) continue; dis[v] = dis[u] + 1; if(v == t) { flag = true; break; } que.push(v); } if(flag) break; } if(!flag) cout << -1 << '\n'; else cout << dis[t] << '\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...
#Verdict Execution timeMemoryGrader output
Fetching results...