vector存储+ bfs 版
#include<iostream>
#include<vector>
#include<queue>
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
vector<vector<int>>graph(n + 1);
while(m --)
{
int id, k;
cin >> id >> k;
while(k --)
{
int v;
cin >> v;
graph[id].push_back(v);
}
}
queue<int>q;
vector<bool>visited(n + 1, false);
q.push(1);
visited[1] = 0;
int c = 0;
while(q.size())
{
int s = q.size();
int count = 0;
while(s --)
{
auto t = q.front();
q.pop();
int k = 0;
int nn = graph[t].size();
for(; k < nn; k ++)
{
if(!visited[graph[t][k]])
{
q.push(graph[t][k]);
visited[graph[t][k]] = true;
}
}
if(k == 0)count ++;
}
if(!c)
{
cout << count ;
c ++;
}
else
{
cout << " " << count ;
}
}
cout << endl;
return 0;
}