알고리즘/BOJ
[BOJ 9205] 맥주 마시면서 걸어가기
히더
2018. 7. 15. 17:20
출처 : https://www.acmicpc.net/problem/9205
1. N+2 배열을 만들어 좌표를 저장한다.
2. 집에서 시작해서 dfs로 도착지점까지 갈 수 있는지 돈다.
3. 도착지점이 true면 반환한다.
#include <iostream>
#include <algorithm>
#include <memory.h>
using namespace std;
int N;
int arr[103][2];
bool visited[103];
bool cal(int x1, int y1, int x2, int y2)
{
return ((abs(x1 - x2) + abs(y1 - y2)) <= 1000 ? true : false);
}
void dfs(int n)
{
visited[n] = true;
for (int i = 1; i < N + 2; i++)
{
if (!visited[i] && cal(arr[n][0], arr[n][1], arr[i][0], arr[i][1])) dfs(i);
}
}
int main()
{
int T;
cin >> T;
for (int t = 0; t < T; t++)
{
cin >> N;
memset(visited, false, sizeof(visited));
for (int i = 0; i < N + 2; i++) { cin >> arr[i][0] >> arr[i][1]; }
dfs(0);
cout << (visited[N + 1] ? "happy" : "sad") << endl;
}
return 0;
}