1. 출발지와 목적지가 같은 경우
#include <iostream>
#include <vector>
#include <queue>
#include <map>
using namespace std;
int main(void)
{
int F, S, G, U, D;
cin >> F >> S >> G >> U >> D;
int answer = 0;
vector<int> vec(F + 1);
vector<int> parent(F + 1, -1);
parent[S] = S;
int arr[2] = { U,-D };
queue<int> q;
q.push(S);
vector < bool> visited(F + 1, false);
visited[S] = true;
while (!q.empty())
{
int pos = q.front();
q.pop();
for (int i = 0; i < 2; ++i)
{
int next = pos + arr[i];
if (next < 1 || next >= F + 1)
{
continue;
}
if (visited[next] == true)
{
continue;
}
q.push(next);
visited[next] = true;
parent[next] = pos;
if (next == G)
{
break;
}
}
}
int pos = parent[G];
while (true)
{
answer++;
if (pos == -1)
{
break;
}
if (parent[pos] == pos)
{
break;
}
pos = parent[pos];
}
if (parent[G] == -1)
{
cout << "use the stairs";
}
else if (S == G)
{
cout << 0;
}
else
{
cout << answer;
}
return 0;
}
'코딩 테스트' 카테고리의 다른 글
백준 - 7576 토마토 (0) | 2024.08.26 |
---|---|
백준 - 1926 그림 (0) | 2024.08.26 |
백준 7562 나이트의 이동 (0) | 2024.08.25 |
백준 1260 Bfs, Dfs (0) | 2024.08.25 |
백준 - 2178 미로탐색 (0) | 2024.08.25 |