• 无根树转有根树


    无根树转有根树

    紫书P352

    【题目链接】http://acm.nyist.net/JudgeOnline/problem.php?pid=20

    【题目类型】

    &题解:

    南阳理工的oj不能用ifndef,坑了我半小时,为啥总是T呢? 尼玛要关重定向。
    这其实就是简单的邻接表+dfs,dfs的两个参数比较重要,要仔细理解,第一个是一h为根,第二个是h的父亲。
    时间复杂度应该是n吧,因为每个只扫了一遍,就是2×n。我也不知道这个对不对,如果你觉得错了,可以评论,我会改的。

    【时间复杂度】O((n))

    &代码:

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int INF = 0x3f3f3f3f;
    #define cle(a,val) memset(a,(val),sizeof(a))
    #define SI(N) scanf("%d",&(N))
    #define SII(N,M) scanf("%d %d",&(N),&(M))
    #define SIII(N,M,K) scanf("%d %d %d",&(N),&(M),&(K))
    #define rep(i,b) for(int i=0;i<(b);i++)
    #define rez(i,a,b) for(int i=(a);i<=(b);i++)
    #define red(i,a,b) for(int i=(a);i>=(b);i--)
    const ll LINF = 0x3f3f3f3f3f3f3f3f;
    #define PU(x) puts(#x);
    #define PI(A) cout<<(A)<<endl;
    #define DG(x) cout<<#x<<"="<<(x)<<endl;
    #define DGG(x,y) cout<<#x<<"="<<(x)<<" "<<#y<<"="<<(y)<<endl;
    #define DGGG(x,y,z) cout<<#x<<"="<<(x)<<" "<<#y<<"="<<(y)<<" "<<#z<<"="<<(z)<<endl;
    #define PIar(a,n) rep(i,n)cout<<a[i]<<" ";cout<<endl;
    #define PIarr(a,n,m) rep(aa,n){rep(bb, m)cout<<a[aa][bb]<<" ";cout<<endl;}
    const double EPS = 1e-9 ;
    /*  ////////////////////////   C o d i n g  S p a c e   ////////////////////////  */
    const int MAXN = 100000 + 9 ;
    int N,S,u,v,p[MAXN];
    vector<int> G[MAXN];
    void dfs(int h,int fa){
        int d=G[h].size();
        for(int i=0;i<d;i++){
            int t=G[h][i];
            if (t!=fa) dfs(t,p[t]=h);
        }
    }
    void Solve()
    {
        SII(N,S);
        rep(i,MAXN) G[i].clear();
        rep(i,N-1){
            SII(u,v);
            G[u].push_back(v);
            G[v].push_back(u);
        }
        p[S]=-1;
        dfs(S,-1);
        for(int i=1;i<=N;i++) printf("%d%c",p[i],i==N?'
    ':' ');
    }
    int main()
    {
        int T;SI(T);while(T--)
        Solve();
        return 0;
    }
    
  • 相关阅读:
    学习Java书籍推荐和面试网站推荐
    Java 多线程学习扩展
    Java Excel 导入导出(二)
    Java Excel 导入导出(一)
    Matplotlib库(二)
    Matplotlib库(一)
    【转】MATLAB导出精美的论文插图
    图像的手绘效果
    Numpy库的使用(二)
    Numpy库的使用(一)
  • 原文地址:https://www.cnblogs.com/s1124yy/p/6000625.html
Copyright © 2020-2023  润新知