比赛 Asm.Def战记之圣地亚哥“杯2015 评测结果 AAAAAAAAAA
题目名称 Asm.Def的游戏 最终得分 100
用户昵称 jekyll 运行时间 0.053 s
代码语言 C++ 内存使用 22.43 MiB
提交时间 2019-10-23 17:54:14
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;

const int maxn=100005;

inline int read(){
	register int x=0,w=1,ch=getchar();
	for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')w=-1;
	for(;ch>='0'&&ch<='9';ch=getchar())x=x*10+ch-48;
	return w*x;
}

int n,m;
int Ecnt,in[maxn],vis[maxn],head[maxn];
struct Edge{int v,next;}edge[maxn*10];

inline void add_edge(int u,int v){
	edge[++Ecnt]=(Edge){v,head[u]},head[u]=Ecnt;
	edge[++Ecnt]=(Edge){u,head[v]},head[v]=Ecnt;
	in[u]++;in[v]++;
}

int main(){
	freopen("asm_game.in","r",stdin);
	freopen("asm_game.out","w",stdout);
	n=read(),m=read();
	for(int i=1;i<=m;i++){
		int a=read(),b=read();add_edge(a,b);
	}
	queue<int>Q;
	for(int i=1;i<=n;i++)
		if(in[i]<3)Q.push(i),vis[i]=1;
	while(!Q.empty()){
		int u=Q.front();Q.pop();
		for(int i=head[u],v;i;i=edge[i].next){
			v=edge[i].v;
			if(--in[v]<3&&!vis[v]){Q.push(v);vis[v]=1;}
		}
	}
	int ans=0;
	for(int i=1;i<=n;i++)
		if(!vis[i])ans^=i;
	cout<<ans<<'\n';
}