結果
問題 | No.763 Noelちゃんと木遊び |
ユーザー |
![]() |
提出日時 | 2019-10-19 16:04:16 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 70 ms / 2,000 ms |
コード長 | 3,046 bytes |
コンパイル時間 | 1,075 ms |
コンパイル使用メモリ | 102,568 KB |
最終ジャッジ日時 | 2025-01-08 00:02:26 |
ジャッジサーバーID (参考情報) |
judge3 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 21 |
ソースコード
#include<iostream>#include<vector>#include<algorithm>#include<cctype>#include<utility>#include<string>#include<cmath>#include<cstring>#include<queue>#include<map>#include<set>#include<climits>#include<bitset>#include<stack>#define REP(i, n) for(int i = 0;i < n;i++)#define REPR(i, n) for(int i = n;i >= 0;i--)#define FOR(i, m, n) for(int i = m;i < n;i++)#define FORR(i, m, n) for(int i = m;i >= n;i--)#define SORT(v, n) sort(v, v+n);#define VSORT(v) sort(v.begin(), v.end());#define llong long long#define pb(a) push_back(a)#define repi(itr, ds) for (auto itr = ds.begin(); itr != ds.end(); itr++)using namespace std;typedef long long int ll;typedef pair<int, int> pii;typedef pair<ll, ll> pll;typedef tuple<ll, ll, ll, ll> lltpl;int dy[8] = { 2,2,-2,-2,1,1,-1,-1 };int dx[8] = { 1,-1,1,-1,2,-2,2,-2 };/******************************************************************************************/const int IINF = 1e9 + 7;const ll LINF = 1e18 + 7;constexpr ll MOD = 1e9 + 7;template<typename T>vector<T> make_v(size_t a) { return vector<T>(a); }template<typename T, typename... Ts>auto make_v(size_t a, Ts... ts) {return vector<decltype(make_v<T>(ts...))>(a, make_v<T>(ts...));}template<typename T, typename V>typename enable_if<is_class<T>::value == 0>::typefill_v(T& t, const V& v) { t = v; }template<typename T, typename V>typename enable_if<is_class<T>::value != 0>::typefill_v(T& t, const V& v) {for (auto& e : t) fill_v(e, v);}// vectortemplate <typename T>istream& operator>>(istream & is, vector<T> & vec) { for (T& x : vec) is >> x; return is; }// pairtemplate <typename T, typename U>ostream& operator<<(ostream & os, pair<T, U> & pair_var) { os << "(" << pair_var.first << ", " << pair_var.second <<")"; return os; }// vectortemplate <typename T>ostream& operator<<(ostream & os, const vector<T> & vec) { os << "{"; for (int i = 0; i < vec.size(); i++) { os << vec[i] << (i+ 1 == vec.size() ? "" : ", "); }os << "}"; return os; }// maptemplate <typename T, typename U>ostream& operator<<(ostream & os, map<T, U> & map_var) { os << "{"; repi(itr, map_var) { os << *itr; itr++; if(itr != map_var.end()) os << ", "; itr--; }os << "}"; return os; }// settemplate <typename T>ostream& operator<<(ostream & os, set<T> & set_var) { os << "{"; repi(itr, set_var) { os << *itr; itr++; if (itr != set_var.end()) os << ", "; itr--; }os << "}"; return os; }ll dp[100005][2];vector<int> G[100005];void dfs(int now, int pa = -1) {for (int to : G[now]) {if (to == pa)continue;dfs(to, now);dp[now][0] += max(dp[to][0] - 1, dp[to][1]);dp[now][1] += max(dp[to][0], dp[to][1]);}}int main() {cin.tie(nullptr);ios::sync_with_stdio(false);int N;cin >> N;for (int i = 0; i < 100005; i++){dp[i][0] = 1;dp[i][1] = 0;}vector<int> X(N), Y(N);for (int i = 0; i < N - 1; i++){cin >> X[i] >> Y[i];X[i]--;Y[i]--;G[X[i]].push_back(Y[i]);G[Y[i]].push_back(X[i]);}dfs(0);cout << max(dp[0][0], dp[0][1]) << endl;}