3 条题解
-
0
既然父子关系未知,那我们就建无根树(无环无向连通图),然后从根结点 开始 dfs,在遍历的过程中确定父子关系并求出深度。
#include <bits/stdc++.h> using namespace std; int n,a,b; int d[21],f[21]; vector<int> e[21]; void dfs(int u,int fa){;//因为是无向图,要加一个参数防止重复 d[u]=d[fa]+1; for (int i=0;i<e[u].size();i++){ int v=e[u][i]; if (v==fa){ continue; } f[v]=u; dfs(v,u); } } int main(){ cin>>n; for (int i=1;i<n;i++){ cin>>a>>b; e[a].push_back(b); e[b].push_back(a); } dfs(1,0) for (int i=2;i<=n;i++){ cout<<i<<" "<<f[i]<<" "<<d[i]<<endl; } return 0; }
话说我还没看懂老师的 dfs 是怎么写的,可能是因为我只看了局部?
- 1
信息
- ID
- 1167
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 8
- 标签
- 递交数
- 47
- 已通过
- 6
- 上传者