浙江大学PAT甲級A 1004(C++)題解


#include <iostream>
#include <vector>
using namespace std;
const int maxN=100010;
vector<int> Node[maxN];
int N,M;
int number[maxN] = {
     0};
int maxH = -1;
void DFS(int index,int depth){
     
    if(depth>maxH){
     
        maxH = depth;
    }
    if(Node[index].size()==0){
     

        number[depth]++;
        return;
    }
    for(int  i=0;i<Node[index].size();i++){
     
        DFS(Node[index][i],depth+1);
    }
}
int main() {
     
    cin>>N>>M;
    for(int i=0;i<M;i++){
     
        int number,sum;
        cin>>number>>sum;
        for(int j=0;j<sum;j++){
     
            int child;
            cin>>child;
            Node[number].push_back(child);
        }
    }
    DFS(1,0);
    cout<<number[0];
    for(int i=1;i<=maxH;i++){
     
        cout<<" "<<number[i];
    }
}


セグメントエラーが発生したのはmain関数の条件が間違っているに違いない.