问题:输入一个结点的无根树的各条边,并指定一个根结点,要求把该树转化为有根树
测试oj:nyoj
当结点数很多时若用邻接矩阵存储图将占用很大的空间,此时可使用vector或邻接表存储,由于vector内存的增长方式问题也可能会引起内存过大问题,此时邻接表存储更具优势
代码:
使用vector存储:
#include #include #include #include using namespace std;const int N = 100005;int p[N];vector g[N];void build(int u, int fa){ int n = g[u].size(); for(int i=0; i = 1) printf("%d", p[1]); for(int i=2; i<=n; i++) printf(" %d", p[i]); printf("\n"); } return 0;}
使用邻接链表存储:
#include #include #include #include #include