本文主要是介绍1004. Counting Leaves (30)[bfs],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 原题:https://www.patest.cn/contests/pat-a-practise/1004
2. 思路:
题意就是输出树的每层叶子节点数。
无需构建树,通过DFS或者BFS遍历就好。
这里采用bfs。
无需构建树,通过DFS或者BFS遍历就好。
这里采用bfs。
已AC。
3. 源码:
#include <iostream>
#include <vector>
#include <queue>
using namespace std;int N, M;
vector< vector<int> > T;void bfs();int main()
{freopen("in.txt", "r", stdin);scanf("%d %d", &N, &M);T.resize(N + 1);for (int i = 0; i < M; i++){int parent, k;scanf("%d %d", &parent, &k);T[parent].resize(k);for (int j = 0; j < k; j++){scanf("%d", &T[parent][j]);}}bfs();return 0;
}void bfs()
{queue<int> Q;Q.push(1);int current, cnt;int last = 1;cnt = 0;while (!Q.empty()){int node = Q.front();Q.pop();if (T[node].empty()){cnt++;}else{for (int i = 0; i < T[node].size(); i++){Q.push(T[node][i]);current = T[node][i];}}if (last == node){if (node != 1)printf(" ");printf("%d", cnt);cnt = 0;last = current;}}printf("\n");return;
}
这篇关于1004. Counting Leaves (30)[bfs]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!