Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
28190 | baka24 | 【BJ】T2 | C++ | 通过 | 100 | 1 MS | 264 KB | 1061 | 2024-04-04 21:00:02 |
#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;ans=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; }