提交记录 可以看到,第一个点错了,但如果各位大佬把本辣鸡的代码把第一个点跑一边,就会发现输出和答案一样,但洛谷却判了个wa,就非常神奇,请各位大佬帮本辣鸡找找问题。
代码:
#include<iostream>
#include<cstdio>
using namespace std;
const bool T=true,F=!T;
const int MAXN=500+10;
static int g[MAXN][MAXN],a[MAXN];
int n,m,ans,tot;
inline int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return x*f;
}
void Dfs(int x)
{
for(int i=1;i<=n;i++)
{
if(g[x][i]>=1)
{
g[x][i]--;g[i][x]--;
Dfs(i);
}
}
a[++tot]=x;
}
signed main()
{
m=read();
for(int i=1;i<=m;i++)
{
int u=read(),v=read();
g[u][v]++;g[v][u]++;
a[u]++;a[v]++;
n=max(n,max(u,v));
}
int x;
for(int i=1;i<=n;i++)
if(a[i]%2)
{
x=i;break;
}
for(int i=1;i<=n;i++)a[i]=0;
Dfs(x);
for(int i=tot;i>=1;i--)
cout<<a[i]<<"\n";
return 0;
}
第一个点: IN:3 1 2 2 3 3 1 ANS:1 2 3 1