1094. The Largest Generation (25)[dfs|bfs遍历]

来源:互联网 发布:reference type java 编辑:程序博客网 时间:2024/05/25 21:33

1. 原题:https://www.patest.cn/contests/pat-a-practise/1094

2. 思路:

题意:给出一棵树,找出某层最多的结点数。
思路:比较简单,用DFS或BFS遍历即可。
DFS简洁,这里用的DFS。
已AC:

3. 源码:

#include <iostream>#include <vector>using namespace std;vector< vector<int> > family;//邻接表表示树vector<int> levels;int maxNum = 0;int maxLevel = 0;void dfs(int index, int level);//深度搜索优先int main(void){//freopen("in.txt", "r", stdin);int N, M;cin >> N >> M;family.resize(N + 1);levels.resize(N + 1, 0);for (int i = 0; i < M; i++)//构建邻接表{int parent, childNum, child;cin >> parent >> childNum;for (int j = 0; j < childNum; j++){cin >> child;family[parent].push_back(child);}}dfs(1, 1);cout << maxNum << ' ' << maxLevel << endl;return 0;}void dfs(int index, int level){levels[level]++;if (levels[level] > maxNum)//判断最值。{maxNum = levels[level];maxLevel = level;}for (int i = 0; i < family[index].size(); i++)//递归遍历{dfs(family[index][i], level + 1);}return;}


0 0
原创粉丝点击