比赛 Asm.Def战记之圣地亚哥“杯2015 评测结果 AAAAAAAAAA
题目名称 Asm.Def的游戏 最终得分 100
用户昵称 Satoshi 运行时间 0.137 s
代码语言 C++ 内存使用 1.94 MiB
提交时间 2015-10-31 08:32:09
显示代码纯文本
#include <fstream>
#include <algorithm>
#include <vector>
#define N 100010
using namespace std;
vector<int> G[N],q;
int f[N]={0};
bool l[N]={0};
int n,m;
ifstream in("asm_game.in");
ofstream out("asm_game.out");

void read()
{
	int i,u,v;
	in>>n>>m;
	for(i=1;i<=m;i++)
	{
		in>>u>>v;
		G[u].push_back(v);
		G[v].push_back(u);
		f[u]++;
		f[v]++;
	}
}
void work()
{
	int i,j,u,v,ans=0;
	bool flag=1,temp=1;
	//for(i=1;i<=n;i++)out<<f[i]<<' ';
	while(flag&&temp)
	{
		q.clear();
		flag=0;//
		temp=0;//无点可删
		//for(i=1;i<=n;i++)out<<f[i]<<' ';
		for(i=1;i<=n;i++)if(!l[i])q.push_back(i),temp=1;
	    for(i=0;i<q.size();i++)
	    {
			u=q[i];
			//out<<u<<' ';
			if(f[u]<3)
			{
				//out<<u<<' ';
				flag=1;
				l[u]=1;
				f[u]=0;
				for(j=0;j<G[u].size();j++)
				{
					v=G[u][j];
					if(!l[v])f[v]--;
				}
			}
	    }
		//out<<endl;
	}
	//for(i=1;i<=n;i++)out<<l[i]<<' ';
	for(i=1;i<=n;i++)if(!l[i])ans^=i;
	out<<ans<<endl;
}
int main()
{
	read();
	work();
	return 0;
}