# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1168138 | SheepHeads | Circle Passing (EGOI24_circlepassing) | C++20 | 2093 ms | 844428 KiB |
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n, m, q;
const int INF = 1e9+7;
vector<vector<int>> adjList(2*n);
int bfs(int node, int &target){
vector<int> dist(2*n, INF);
dist.at(node) = 0;
queue<int> q;
q.push(node);
while(!q.empty()){
int cur = q.front();
q.pop();
for(auto itr : adjList.at(cur)){
if(dist.at(itr) == INF){
dist.at(itr) = dist.at(cur)+1;
q.push(itr);
}
}
if(dist.at(target) != INF){
return dist.at(target);
}
}
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n>>m>>q;
adjList = vector<vector<int>>(2*n);
for(int i = 0; i<m; i++){
int x;
cin>>x;
adjList.at(x).push_back(x+n);
adjList.at(x+n).push_back(x);
}
adjList.at(0).push_back(2*n-1);
adjList.at(0).push_back(1);
adjList.at(2*n-1).push_back(0);
adjList.at(2*n-1).push_back(2*n-2);
for(int i = 1; i<2*n-1; i++){
adjList.at(i).push_back(i+1);
adjList.at(i).push_back(i-1);
}
while(q--){
int x, y;
cin>>x>>y;
cout << bfs(x, y) << "\n";
}
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
# | 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... |