无根树转有根树的一般方法
生活随笔
收集整理的這篇文章主要介紹了
无根树转有根树的一般方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
紫書:P352
#include <iostream> #include <vector> #include <cstring> using namespace std; int p[100]; vector<int> G[100]; //鄰接表 int n;void read_tree() {int u,v;cin>>n;for(int i=0;i<n-1;i++){cin>>u>>v; //只是告知邊,沒有從屬關系 G[u].push_back(v);G[v].push_back(u);} }void dfs(int u,int fa) {//使u成為與他相連之邊的父節點for(int i=0;i<G[u].size();i++){int v=G[u][i];if(v!=fa) dfs(v,p[v]=u);} }int main() {while(1){read_tree();memset(p,0,sizeof(p));int root;cin>>root;p[root]=-1;dfs(root,-1);for(int i=0;i<=n-1;i++)cout<<p[i]<<" ";cout<<"\n";}return 0; } View Code測試數據:
8
0 1
0 2
0 3
1 4
1 5
5 6
5 7
1
結果:
1 -1 0 0 1 1 5 5
?
轉載于:https://www.cnblogs.com/zsyacm666666/p/5005148.html
總結
以上是生活随笔為你收集整理的无根树转有根树的一般方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 支持向量机(SVM)PPT
- 下一篇: 7、单向一对多的关联关系(1的一方有n的