그대, 그머가 되어 - 14496
2025. 2. 12. 15:32ㆍPS/백준
문제
https://www.acmicpc.net/problem/14496
느낀점
한 번 변환할 때마다 변환 횟수를 기록해주어야하는데 그 과정을 bfs로 구현했다. 처음에는 생각해내는 것이 어려웠는데, bfs 문제를 풀다보면 비슷한 패턴으로 풀 수 있다. 관련 문제를 많이 접해보자!
풀이
#include <iostream>
#include <vector>
#include <queue>
#include <map>
#include <algorithm>
int main()
{
int a, b;
std::cin >> a >> b;
int N, M;
std::cin >> N >> M;
std::map<int, std::vector<int>> change;
std::queue<std::pair<int, int>> stack;
std::vector<int> count(N + 1, 0);
std::vector<bool> visited(N + 1, false);
for (int i = 0; i < M; i++)
{
int start, end;
std::cin >> start >> end;
change[start].push_back(end);
change[end].push_back(start);
}
stack.push(std::make_pair(a, 0));
while (!stack.empty())
{
std::pair<int, int> temp = stack.front();
visited[temp.first] = true;
stack.pop();
if (temp.first == b)
{
std::cout << temp.second;
return 0;
}
for (int i = 1; i <= N; i++)
{
if (!visited[i] && find(change[temp.first].begin(), change[temp.first].end(), i) != change[temp.first].end())
{
visited[i] = true;
stack.push(std::make_pair(i, temp.second + 1));
}
}
}
std::cout << -1;
return 0;
}
'PS > 백준' 카테고리의 다른 글
점프 점프 - 11060 (0) | 2025.02.12 |
---|---|
양 한마리... 양 두마리... - 11123 (0) | 2025.02.12 |
A->B - 16953 (0) | 2025.02.12 |
팰린드롬 만들기 - 1254 (0) | 2025.02.12 |
비슷한 단어 - 2607 (0) | 2025.02.12 |