#include using namespace atcoder; #include #include #include #include using namespace std; pair op(pair a,pair b){ return a>b?a:b; } pair e(){ return make_pair(-1,-1); } int main(){ int N; cin>>N; vector> Graph(N); for(int i=0;i>x>>y; Graph[x-1].push_back(y-1); Graph[y-1].push_back(x-1); } segtree,op,e> seg(N); deque que; que.push_back(N); que.push_back(0); vector checked(N,false); vector pre(N); vector cnt(N,1); int searched=0; while(!que.empty()){ int q=que.back();que.pop_back(); if(q tmp=seg.prod(pre[q-N],searched); if(tmp.first==-1){ break; } cnt[q-N]+=tmp.first; seg.set(tmp.second,e()); } seg.set(searched,make_pair(cnt[q-N],searched)); searched++; } } cout<