提交时间:2024-04-04 20:58:36
运行 ID: 28189
#include<bits/stdc++.h> using namespace std; #define int long long #define inx int i=h[u],v=(~i)?edge[i].v:0;~i;i=edge[i].nx,v=(~i)?edge[i].v:0 const int MAXN=1010,N=35,inf=100000000000000000; int n,m; struct Edge{int v,nx;}edge[MAXN<<1];int h[MAXN],CNT;void init(){memset(h,-1,sizeof(h));CNT=1;} void add_side(int u,int v){edge[++CNT]={v,h[u]};h[u]=CNT;edge[++CNT]={u,h[v]};h[v]=CNT;} int f[MAXN],ans; void dfs(int u,int lst){ for(inx){ if(v==lst)continue; dfs(v,u); if(!f[v]&&f[u]){ ans=-1; } if(!f[v]){ f[u]=1; } } } void slv(){init(); scanf("%lld%lld",&n,&m);f[n]=0; for(int i=1;i<n;i++){f[i]=0; int u,v; scanf("%lld%lld",&u,&v); add_side(u,v); } dfs(1,-1); if(ans==-1||!f[1]){ printf("Alice\n"); return; } if(m<n-1-n/2){ printf("Alice\n"); } else printf("Bob\n"); } signed main(){ int _;scanf("%lld",&_);while(_--) slv(); return 0; }