虽然我写的烂但是范围一直改也改不过去,是这个方法不行么qaq
#include<bits/stdc++.h>
using namespace std;
long long int n,m;
long long int a[11010][19010];
long long int b[10000];
bool p[11000];
void dfs(long long int x)
{
if(a[x][0]!=0)
for(long long int i=1;i<=a[x][0];++i)
{
if(p[a[x][i]]!=1)
{
cout<<a[x][i]<<" ";
p[a[x][i]]=1;
}
}
for(long long int i=1;i<=a[x][0];++i)
dfs(a[x][i]);
}
void bfs(long long int x)
{
if(a[x][0]==0) return ;
else
{
for(long long int i=1;i<=a[x][0];++i)
{
if(p[a[x][i]]!=1)
{
cout<<a[x][i]<<" ";
p[a[x][i]]=1;
bfs(a[x][i]);
}
}
}
}
int main()
{
long long int n,m;
cin>>n>>m;
for(long long int i=1;i<=m;++i)
{
long long int x,y;
cin>>x>>y;
a[x][0]++;
a[x][a[x][0]]=y;
}
for(long long int i=1;i<=n;++i)
{
for(long long int j=1;j<=a[i][0];++j)
{
b[j]=a[i][j];
}
sort(b+1,b+1+a[i][0]);
for(long long int j=1;j<=a[i][0];++j)
a[i][j]=b[j];
}
cout<<1<<" ";
bfs(1);
for(long long int i=1;i<=n;++i)
p[i]=0;
cout<<endl;
cout<<1<<" ";
dfs(1);
return 0;
}