用一个邻接矩阵存图.
#include<bits/stdc++.h>
using namespace std;
int u,k,v;
const int N=110;
int m[N][N],d[N];
int n;
void bfs(int start)
{
memset(d,-1,sizeof d);
//for(int i=1;i<=n;i++)d[i]=-1;
queue<int> q;
q.push(start);
d[start]=0;
while(!q.empty())
{
int u=q.front();
q.pop();
for(int v=1;v<=n;v++)
{
if(m[u][v]==0 || d[v]!=-1)
continue;
d[v]=d[u]+1;
q.push(v);
}
}
for(int i=1;i<=n;i++)
cout<<i<<" "<<((d[i]==-1)?(-1):d[i])<<endl;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>u>>k;
while(k--)
{
cin>>v;
m[u][v]=1;
}
}
bfs(1);
return 0;
}