PS
[백준] 2644번 촌수계산
Eastplanet
2022. 7. 14. 12:11
문제 출처: https://www.acmicpc.net/problem/2644
2644번: 촌수계산
사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어
www.acmicpc.net
BFS로 촌수를 계산할 수 있다.
#include<iostream>
#include<algorithm>
#include<unordered_map>
#include<cstring>
#include<math.h>
#include<queue>
#include<vector>
using namespace std;
vector<int>adj[101];
int visited[101];
int main(void)
{
ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int n; cin >> n;
int find1, find2;
cin >> find1 >> find2;
int m;
cin >> m;
for (int i = 0; i < m; i++) {
int a, b;
cin >> a >> b;
adj[a].push_back(b);
adj[b].push_back(a);
}
queue<int> q;
q.push(find1);
visited[find1] = 1;
while (!q.empty()) {
int curr = q.front(); q.pop();
if (curr == find2) {
cout << visited[find2] - 1;
return 0;
}
for (auto next : adj[curr]) {
if (visited[next])continue;
visited[next] = visited[curr] + 1;
q.push(next);
}
}
cout << "-1";
}