Skip to content

Commit 52114b0

Browse files
ing-eokingbugs-bot
authored andcommitted
🐜 Study: λ“±λŒ€ (#46)
1 parent d74f4e3 commit 52114b0

1 file changed

Lines changed: 44 additions & 0 deletions

File tree

β€Žing-eoking/λ“±λŒ€.ccβ€Ž

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#include <iostream>
2+
#include <string>
3+
#include <vector>
4+
#include <set>
5+
#include <algorithm>
6+
7+
using namespace std;
8+
9+
#define INF 999999
10+
#define ROOT 1
11+
12+
vector<set<int>> edge;
13+
vector<vector<int>> dp;
14+
15+
void makeTree(int cur, int parent) {
16+
edge[cur].erase(parent);
17+
for (auto i : edge[cur]) {
18+
makeTree(i, cur);
19+
}
20+
}
21+
22+
void dfs (int cur) {
23+
int sum1 = 0, sum2 = 0;
24+
for (auto i : edge[cur]) {
25+
dfs(i);
26+
dp[cur][0] += min(dp[i][0], dp[i][1]);
27+
dp[cur][1] += dp[i][0];
28+
}
29+
dp[cur][0]++;
30+
}
31+
32+
int solution(int n, vector<vector<int>> lighthouse) {
33+
int answer = 0;
34+
edge = vector<set<int>>(n + 1);
35+
dp = vector<vector<int>> (n + 1, vector<int>(2, 0));
36+
for (auto i : lighthouse) {
37+
edge[i[0]].insert(i[1]);
38+
edge[i[1]].insert(i[0]);
39+
}
40+
makeTree(ROOT, 0);
41+
dfs(ROOT);
42+
43+
return min(dp[ROOT][0], dp[ROOT][1]);
44+
}

0 commit comments

Comments
Β (0)