比赛 |
Asm.Def战记之圣地亚哥“杯2015 |
评测结果 |
AAAAAAAAAA |
题目名称 |
Asm.Def的游戏 |
最终得分 |
100 |
用户昵称 |
真香警告 |
运行时间 |
0.102 s |
代码语言 |
C++ |
内存使用 |
45.13 MiB |
提交时间 |
2019-10-23 17:43:38 |
显示代码纯文本
#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=1000100;
int n,m;
int tot;
int ans;
int head[maxn];
int sum[maxn];
int in[maxn];
int out[maxn];
bool vis[maxn];
struct edge{
int to;
int nxt;
}e[2*maxn];
inline int read(){
int w=1,x=0,ch=getchar();
for(;ch<'0'||ch>'9';ch=getchar()) if(ch=='-') w=-1;
for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';
return w*x;
}
void add(int x,int y){
tot++;
e[tot].to=y;
e[tot].nxt=head[x];
head[x]=tot;
}
void dfs(int x){
vis[x]=1;
for(register int i=head[x];i;i=e[i].nxt){
int y=e[i].to;
sum[x]++;
if(vis[y]) continue;
else{
vis[y]=1;
dfs(y);
}
}
}
void dfs_ans(int x){
vis[x]=1;
for(register int i=head[x];i;i=e[i].nxt){
int y=e[i].to;
if(vis[y]) continue;
vis[y]=1;
if(sum[y]==0) dfs_ans(y);
else{
ans=ans^y;
dfs_ans(y);
}
}
}
int main(){
freopen("asm_game.in","r",stdin);
freopen("asm_game.out","w",stdout);
n=read(),m=read();
int x,y;
for(register int i=1;i<=m;i++){
x=read(),y=read();
add(x,y);
add(y,x);
}
dfs(1);
while(1){
bool pd=1;
for(register int i=1;i<=n;i++){
if(sum[i]<3&&sum[i]!=0){
sum[i]=0;
for(register int k=head[i];k;k=e[k].nxt){
int y=e[k].to;
if(sum[y]==0) continue;
else sum[y]--;
}
pd=0;
}
}
if(pd==1) break;
}
memset(vis,0,sizeof(vis));
for(register int i=1;i<=n;i++){
if(sum[i]!=0){
ans=i;
dfs_ans(i);
break;
}
}
cout<<ans<<'\n';
return 0;
}