#include using namespace std; typedef long long ll; typedef vector vi; typedef vector vl; typedef pair pii; typedef int _loop_int; #define REP(i,n) for(_loop_int i=0;i<(_loop_int)(n);++i) #define FOR(i,a,b) for(_loop_int i=(_loop_int)(a);i<(_loop_int)(b);++i) #define FORR(i,a,b) for(_loop_int i=(_loop_int)(b)-1;i>=(_loop_int)(a);--i) #define DEBUG(x) cout<<#x<<": "< class UnionFind { vector parent; vector rank; public: UnionFind(T n) { init(n); } void init(T n) { parent.clear(); rank.clear(); for(int i=0; i>n; int bridges[N]={}; UnionFind uf(n); REP(i,n-1){ int u,v; cin>>u>>v; bridges[u]++; bridges[v]++; uf.unite(u,v); } int cntr = 0; vi roots; FOR(i,0,n){ roots.emplace_back(uf.find(i)); if(bridges[i]==1) cntr=1; } //DEBUG_VEC(roots); sort(ALL(roots)); roots.erase(unique(ALL(roots)), roots.end()); //DEBUG_VEC(roots); cntr += roots.size(); if(cntr>=3) cout << "Alice" << endl; else cout << "Bob" << endl; return 0; }