傳送門
思路:
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#include<map>
#include<queue>
#include<math.h>
#include<set>
using namespace std;
#define ll long long
int f[1000];
int a[110][110];
int find(int x)
{
return f[x] == x ? x : f[x]=find(f[x]);
}
int vis[110];
int main()
{
int n,m;
cin>>n>>m;
int cnt = 0;
for(int i = 1; i <= n; i++)f[i] = i;
while(m--)
{
int u,v;
cin>>u>>v;
if(find(u) != find(v))
f[find(u)] = find(v);
else
cnt++;
a[u][v] = a[v][u] = 1;
}
int sin = 0,al = 0;
for(int i = 1; i <= n; i++)
{
if(f[i] == i && !vis[find(i)])
{
sin++;
continue;
}
if(!vis[find(i)])
{
al++;
vis[find(i)] = 1;
}
}
al -= cnt;
if((cnt*2+al+sin) % 2) cout<<"Alice"<<endl;
else cout<<"Bob"<<endl;
}