Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 백트래킹
- 정렬
- c++
- DFS
- 누적 합
- 문자열
- 그래프
- 브루트포스
- 우선순위 큐
- VR
- ue5
- Unreal Engine 5
- Team Fortress 2
- BFS
- 투 포인터
- 다이나믹 프로그래밍
- 알고리즘
- 트리
- 재귀
- 구현
- 유니티
- 수학
- 자료구조
- 그리디 알고리즘
- 시뮬레이션
- 스택
- 백준
- 다익스트라
- 유니온 파인드
- XR Interaction Toolkit
Archives
- Today
- Total
1일1알
백준 15900번 나무 탈출 C++ 본문
리프 노드에 있는 말을 한 칸씩 올려서 루트 노드에 말이 도착하면 말이 사라지고, 모든 말이 사라짐과 동시에 차례가 끝난 사람이 이기는 게임이다.
생각을 조금 해보면 자기 차례때 어느 말을 선택하든 결과는 달라지지 않고, 단지 먼저 누가 시작했는지에 따라 승패가 정해지는 홀짝 게임 같은 게임이다.
결국 루트 노드에서 리프 노드까지의 모든 높이의 합에 따라 승패가 결정된다.
dfs를 통해서 루트 노드에서 모든 리프 노드까지의 합을 구하고, 그 합이 홀수라면 성원이의 승리고, 짝수라면 성원이의 패배이다.
리프 노드와 연결된 노드는 무조건 하나이기 때문에 노드와 연결된 노드가 1개이고, 그 노드가 1이 아닐 때 (1은 루트노드라고 문제에 적혀있음) 를 dfs의 종료 조건으로 설정하였다.
#include <iostream>
#include <string>
#include <vector>
#include <math.h>
#include <algorithm>
#include <utility>
#include <stack>
#include <queue>
#include <math.h>
#include <set>
#include <map>
#include <unordered_map>
#include <unordered_set>
using namespace std;
typedef long long ll;
int n;
int sum = 0;
vector<vector<int>> node(500001, vector<int>());
vector<bool> visited(500001,false);
void dfs(int num, int cnt) {
if (node[num].size() == 1 && num != 1) {
sum += cnt;
return;
}
visited[num] = true;
for (int i = 0; i < node[num].size(); i++) {
if (visited[node[num][i]]) continue;
dfs(node[num][i], cnt + 1);
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> n;
int node1, node2;
for (int i = 0; i < n - 1; i++) {
cin >> node1 >> node2;
node[node1].push_back(node2);
node[node2].push_back(node1);
}
dfs(1, 0);
if (sum % 2 == 0) cout << "No";
else cout << "Yes";
};
'알고리즘' 카테고리의 다른 글
백준 1342번 행운의 문자열 C++ (0) | 2021.12.03 |
---|---|
백준 2410번 2의 멱수의 합 C++ (0) | 2021.12.02 |
백준 4889번 안정적인 문자열 C++ (0) | 2021.11.30 |
백준 4883번 삼각 그래프 C++ (0) | 2021.11.29 |
백준 2138번 전구와 스위치 C++ (0) | 2021.11.28 |