이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MX=1e5+5;
int N,K,M,Q;
vector<int> adj[MX];
int dist[MX], par[MX];
int A[MX], B[MX];
int main() {
cin.tie(0); ios_base::sync_with_stdio(0);
cin>>N>>K>>M;
for(int i=1;i<=M;i++) cin>>A[i]>>B[i];
cin>>Q;
for(int i=1;i<=Q;i++) {
int s, t;
cin>>s>>t;
queue<int> q;
for(int i=1;i<=N;i++) dist[i]=-1;
dist[s]=0;
q.push(s);
while(!q.empty()) {
int p=q.front(); q.pop();
for(int i=1;i<=M;i++) {
if(A[i]<B[i]) {
int m=min(A[i]+K-1,B[i]-1);
if(A[i]<=p&&p<=m) {
for(int j=p;j<=B[i];j++)
if(dist[j]==-1) {
par[j]=p;
dist[j]=dist[p]+1;
q.push(j);
}
}
} else {
int m=max(A[i]-K+1,B[i]+1);
if(m<=p&&p<=A[i]) {
for(int j=B[i];j<=p;j++)
if(dist[j]==-1) {
par[j]=p;
dist[j]=dist[p]+1;
q.push(j);
}
}
}
}
}
cout<<dist[t]<<'\n';
}
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |