天天看點

牛客4 Just a joke

​​傳送門​​

思路:

#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;
}