#include <iostream>
#include <algorithm>
#include <queue>
#include <tuple>
int graph[101][101] = {};
bool visit[101] = {};
int main()
{
int n = 0;
int iStart = 0;
int iDist = 0;
int m = 0;
std::cin >> n;
std::cin >> iStart >> iDist;
std::cin >> m;
for (int i = 0; i < m; ++i)
{
int iFirstNumber = 0;
int iSecondNumber = 0;
std::cin >> iFirstNumber >> iSecondNumber;
graph[iFirstNumber][iSecondNumber] = 1;
graph[iSecondNumber][iFirstNumber] = 1;
}
std::queue<std::pair<int, int>> que = {};
que.push({ 0, iStart });
while (!que.empty())
{
std::pair<int, int> pairInt = que.front();
int iCount = pairInt.first;
int iNow = pairInt.second;
que.pop();
if (iNow == iDist)
{
std::cout << iCount;
return 0;
}
if (!visit[iNow])
visit[iNow] = true;
else
continue;
for (int i = 1; i <= n; ++i)
{
if (graph[iNow][i] && !visit[i])
que.push({iCount + 1, i});
}
}
std::cout << -1;
return 0;
}
BFS로 풀었다. (최단시간)
'오늘의 알고리즘' 카테고리의 다른 글
[C++] 백준 1697 숨바꼭질 (0) | 2022.05.12 |
---|---|
[C++] 백준 7569번 토마토 (0) | 2022.05.12 |
[C++] 백준 2667 단지번호붙이기 (0) | 2022.05.11 |
[C++] 백준 2606번 바이러스 (0) | 2022.05.09 |
[C++] 백준 2178 미로 탐색 (0) | 2022.05.07 |