#include #include using namespace std; int main() { int n; cin >> n; vector adj[n]; vector deg(n,0); vector count(n,1); vector visited(n,false); for(int i = 0; i < n-1; i++){ int u,v; cin >> u >> v; u--; v--; adj[u].push_back(v); adj[v].push_back(u); deg[u]++; deg[v]++; } priority_queue> q; for(int i = 0; i < n; i++){ if(deg[i]==1){q.push({-count[i],i});} } bool can = true; while(!q.empty()){ int r = q.size(); for(int i = 0; i < r; i++){ pair f = q.top(); q.pop(); visited[f.second]=true; for(auto e: adj[f.second]){ if(!visited[e]){ if(count[f.second]>count[e]){ can=false; cout << "NO" << "\n"; return 0; }else{ count[e]+=count[f.second]; deg[e]--; deg[f.second]--; if(deg[e]==1){q.push({-count[e],e});} } } } } } // for(int i = 0; i