比赛 Asm.Def战记之圣地亚哥“杯2015 评测结果 AWAWWWWWWA
题目名称 Asm.Def的游戏 最终得分 30
用户昵称 WINAPI 运行时间 0.349 s
代码语言 C++ 内存使用 2.00 MiB
提交时间 2015-10-31 11:05:35
显示代码纯文本
#include<cstdio>
#include<vector>
#include<cstring>
#include<queue>
#define maxn 100005
using namespace std;
vector<int> a[maxn];
int vis[maxn],bian[maxn];
queue<int> q;
void del (int x,int y)
{
	for(int i=0;i<a[x].size();i++)
	{
		if(a[x][i]==y) {
			a[x][i]=0;bian[x]--;bian[y]--;
		}
	}
}
int main()
{
	freopen("asm_game.in","r",stdin);
	freopen("asm_game.out","w",stdout);
	int n,m,sum=0;
	memset(vis,0,sizeof(0));
	memset(bian,0,sizeof(bian));
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++)
	{
		int x,y;
		scanf("%d%d",&x,&y);
		a[x].push_back(y);
		a[y].push_back(x);  
		bian[x]++;
		bian[y]++;
	}
	for(int i=1;i<=n;i++)
	if(bian[i]<3) {q.push(i);vis[i]=1;}
	while(q.size()>0)
	{
		int u=q.front();
		q.pop();
		for(int i=0;i<a[u].size();i++)
			{
				if(a[u][i]!=0) {
					del(u,a[u][i]);
					del(a[u][i],u);
				if(bian[a[u][i]]<3&&!vis[a[u][i]]) {q.push(a[u][i]);vis[a[u][i]]=1;}
				}
			}
	}
	for(int i=1;i<=n;i++)
	{
		if(bian[i]>=3) sum^=i;
	}
	printf("%d",sum);
	return 0;
}