티스토리 뷰
문제
알고리즘
Greedy
풀이
인접한 지역과 거의 인접한 지역에 다른 종류의 풀을 심어야 할 때, 풀 종류의 최솟값을 묻는 문제입니다.
주어진 예제말고도 그림을 그려 특징을 파악하며 풀면 됩니다. 한 노드 A에 인접한 노드 B, C, D가 있다고 가정해봅시다. 이 노드들은 A와는 무조건 다른 종류의 풀을 사용해야만 합니다. 하지만 A를 제외한 B의 인접 노드에 풀을 심을 때는 A와 다른 종류의 풀을 심어야 하지만(A는 두칸이 떨어져 있어 거의 인접한 지역이므로) C, D에 심었던 풀을 심을 수 있음을 관찰하면 됩니다. 일반화하면 노드 중 최대 indegree값 + 1 이 정답입니다.
코드
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < n; ++i)
#define REP(i, n) for (int i = 1; i <= n; ++i)
using namespace std;
int N;
int cnt[100000];
int main() {
#ifndef ONLINE_JUDGE
freopen("in", "r", stdin);
freopen("out", "w", stdout);
#endif
cin.tie(NULL);
cout.tie(NULL);
ios::sync_with_stdio(false);
cin >> N;
rep(i, N - 1) {
int a, b;
cin >> a >> b;
--a, --b;
cnt[a]++;
cnt[b]++;
}
cout << *max_element(cnt, cnt + N) + 1;
return 0;
}
'Algorithm' 카테고리의 다른 글
[백준 13512] 트리와 쿼리 3 (0) | 2020.12.29 |
---|---|
[백준 17025] Icy Perimeter (0) | 2020.12.28 |
[백준 17408] 수열과 쿼리 24 (0) | 2020.12.26 |
[백준 17038] The Great Revegetation (Silver) (0) | 2020.12.08 |
[백준 17037] Painting the Barn (Silver) (0) | 2020.12.05 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 2-SAT
- dfs
- sweeping
- 이분탐색
- knapsack
- 동적계획법
- 좌표압축
- union find
- sorting
- DP
- spring
- Fenwick
- bfs
- implementation
- 트라이
- kmp
- 세그먼트트리
- SCC
- Oracle
- hld
- greedy
- 정렬
- string
- 이분매칭
- 펜윅트리
- Segment tree
- 스위핑
- dijkstra
- Suffix Array
- spring boot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함