ZJU PAT 1004

来源:互联网 发布:淘宝店的店铺介绍 编辑:程序博客网 时间:2024/06/08 09:05

输出每一层叶子节点数,将树保存在邻接表里面, DFS

#include<iostream>using namespace std;int tree[105][105];bool isleaf[105];bool vis[105];int res[105];int deep,max_deep;void initialize(){    for(int i = 0 ; i < 105 ; i++)    {        for(int j = 0 ; j < 105 ; j++)tree[i][j] = 0 ;        isleaf[i] = true;        vis[i] = false;        res[i] = 0;    }}void dfs(int cur, int n_){    deep++;    if(isleaf[cur])    {        res[deep]++;        if(deep>max_deep)max_deep = deep;        return;    }    for(int c = 2 ; c <= n_ ; c++)    {        if(tree[cur][c]==1 && !vis[c])        {            vis[c] = !vis[c];            dfs(c,n_);            deep--;        }    }}int main(){    int n , m , id , k , tmp ;    while(cin >> n >> m)    {         initialize();         deep = max_deep = 0 ;        for(int i = 0 ; i < m ; i++)        {            cin >> id >> k;            for(int j = 0 ; j < k ; j++)            {                cin >> tmp;                tree[id][tmp] = 1;                isleaf[id] = false;            }        }        dfs(1 , n);        for(int g=1 ; g < max_deep ; g++)cout << res[g]<<" ";        cout<<res[max_deep]<<endl;    }    return 0;}



0 0
原创粉丝点击