比赛 |
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;
}