比赛 Asm.Def战记之圣地亚哥“杯2015 评测结果 AAAAAAAAWW
题目名称 Asm.Def的游戏 最终得分 80
用户昵称 momo123 运行时间 0.325 s
代码语言 C++ 内存使用 1.69 MiB
提交时间 2015-10-31 09:44:50
显示代码纯文本
#include<cstring>
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
using namespace std;
int m,n,x,y,ans,w,r,sum,u;
struct edge
{
	int from,to;
};
queue<int>q;
vector<edge>p[100005];
bool vis[100005],sc[100005];
int d[10005];
void addedge(int b,int a)
{
	p[a].push_back((edge){a,b});
	p[b].push_back((edge){b,a});
	d[a]++;
	d[b]++;
}
void chuli()
{
	q.push(u);
	while(!q.empty())
	{
		int k=q.front(); 
		q.pop();
		vis[k]=0;
		sc[k]=1;
		for(int j=0;j<p[k].size();j++)
		{
			edge&e=p[k][j];
			d[e.to]--;
			if((d[e.to]<3)&&(!vis[e.to])&&(!sc[e.to]))
			{
				q.push(e.to);
				vis[e.to]=1;
			}
		}
	}
}
int main()
{
    freopen("asm_game.in","r",stdin);
	freopen("asm_game.out","w",stdout);
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		cin>>w>>r;
		addedge(w,r);
	}
	for(int i=1;i<=n;i++)
		if(d[i]<3&&!sc[i]) 
		{
			u=i;
            chuli();
		}
	for(int i=1;i<=n;i++)
	   if(!sc[i])
	      ans=ans xor i;
	   else sum++;
	if(sum==n) 
	   cout<<'0';
	else 
	   cout<<ans<<endl;
	return 0;
}