比赛 Asm.Def战记之圣地亚哥“杯2015 评测结果 AAAAAAAAAA
题目名称 Asm.Def的游戏 最终得分 100
用户昵称 rainy 运行时间 0.194 s
代码语言 C++ 内存使用 16.91 MiB
提交时间 2019-10-23 18:21:28
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
typedef long long int_t;
char getch(){ static char buf[100000],*s1,*s2; return (s1 == s2) && (s2 = (s1 = buf) + fread(buf,1,100000,stdin)),s1 == s2 ? EOF : *s1++; }

#ifdef local
#define getch getchar
#endif

int_t read(){
    int_t x = 0, w = 1;char ch = 0;
    while(!isdigit(ch)) {ch = getch(); if(ch == '-') w = -1;}
    while(isdigit(ch)) x = x * 10 + ch - '0', ch = getch();
    return x * w;
}

const int_t maxn = 100100;

vector<int_t> G[maxn];
int_t deg[maxn];
bool vised[maxn];

void gao(int_t n){
    queue<int_t> que;
    for(int_t i=1;i<=n;i++) if(deg[i] < 3) que.push(i);
    while(!que.empty()){
        int_t rt = que.front();que.pop();
        if(vised[rt]) continue;
        vised[rt] = true;
        for(vector<int_t>::iterator it = G[rt].begin();it != G[rt].end();it++){
            int_t to = *it;
            if(vised[to]) continue;
            deg[to]--; if(deg[to] < 3) que.push(to);
        }
    }
    int_t ans = 0;
    for(int_t i=1;i<=n;i++) if(!vised[i]) ans ^= i;
    cout<<ans;
}

int main(){
    freopen("asm_game.in","r",stdin);
    freopen("asm_game.out","w",stdout);
    int_t n = read(),m = read();
    while(m--){
        int_t u = read(),v = read();
        deg[u]++; deg[v]++;
        G[u].push_back(v);
        G[v].push_back(u);
    }
    gao(n);
}