谁能看看我这题哪里错了?
#include<bits/stdc++.h>
using namespace std;
long long n,m,fir[10005],nxt[10005],son[10005],fa[10005],tot;
bool vis[10005];
void add(int x,int y){
tot++;
son[tot]=y;
nxt[tot]=fir[x];
fir[x]=tot;
}
void dfs(int x){
vis[x]=true;
for(int j=fir[x];j;j=nxt[x])if(!vis[son[j]]){
fa[son[j]]=x;
dfs(son[j]);
}
}
int main(){
cin>>n>>m;//n:点数 m:边数
for(int i=1;i<=m;i++){
int x,y;
cin>>x>>y;
add(x,y);
add(y,x);
}
dfs(1);
for(int i=1;i<=n;i++){
cout<<i<<':'<<fa[i]<<' ';
for(int j=fir[i];j;j=nxt[j])if(son[j]!=fa[i])cout<<son[j]<<' ';
cout<<endl;
}
return 0;
}