File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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+ }
You canβt perform that action at this time.
0 commit comments