4 条题解
-
5
UP回顾L11,感悟(挺简单的嘛!)OK,进入正题,这一题是L11-1的内容,求深度
- 用 vector 类型的 e[i] 表示以 i 为节点的子节点编号有哪些
- 求深度,通过递归的方式深度搜索整棵树,每个节点的子节点都是其父节点的深度+1
- 这一题有所改变,求树的深度,那就把最大值求出来即可,只要在递归时加一个max语句就行
那思路就到这,这题很简单……
(行行行,代码给你们)#include <bits/stdc++.h> using namespace std; const int N = 10005; vector <int> e[N]; int n, a, b, ans = 1, de[N]; void dfs(int u) { for (int i = 0; i < e[u].size(); i++) { int v = e[u][i]; de[v] = de[u] + 1; ans = max(de[v], ans); dfs(v); } } int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n; while (cin >> a >> b) e[a].push_back(b); de[1] = 1; dfs(1); cout << ans; return 0; }
L11的第一篇题解
完结撒花~✿✿ヽ(°▽°)ノ✿
-
1
递归,深度优先
#include<bits/stdc++.h> using namespace std; int n,ans; vector<int> awa[27]; void m(int x,int d) { ans=max(ans,d); for (int i=0;i<awa[x].size();i++) m(awa[x][i],d+1); } int main() { cin>>n; for (int i=1;i<=n;i++) { int a,b; cin>>a>>b; awa[a].push_back(b); } m(1,1); cout<<ans; return 0; }
-
1
这道题要用到vector
#include <bits/stdc++.h> using namespace std; int n,a,b,ans = 1; //ans表示深度,初始深度为1 vector<int> e[105]; void dfs(int u,int d) //u为节点编号,d为深度 { for (int i = 0;i < e[u].size();i++) { int v = e[u][i]; dfs(v,d+1); } ans = max(ans,d); //只要求最大值就行了 } int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n; for (int i = 1;i < n;i++) { cin >> a >> b; e[a].push_back(b); //输入。e[a]的子节点加上b } dfs(1,1); //从1号节点,深度为1开始搜 cout << ans << endl; return 0; }
-
-6
写题解请注意 鼓励大家写题解,但注意题解格式。
题解一定要有思路解析或代码注释,能否让别人理解你的思路
也是你的能力的检验,不要只放无意义的代码给大家复制,那就失去了做题的初心。
给代码两端加上这个会舒服一些
```cpp
你的代码
```
</span>
这个点在键盘的左上角tab上面那个键,注意切换输入法
#include<iostream> using namespace std; int main() { int n; cin>>n;//这是一个注释 return 0; }
请注意严禁抄袭题解,写题解不要只放代码,需加上你的思路或代码注释。
抄袭题解一经发现直接取消成绩。
题解被删除的可能
- 代码不符合格式规范
- 没有思路讲解或者没有注释,
- 无意义的题解
大家携手共同维护一个良好的编程环境,如果一经发现,多次作乱。可能会被管理员拉黑,请注意,一旦拉黑即失去登陆资格。
- 1
信息
- ID
- 1166
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 131
- 已通过
- 77
- 上传者