zoukankan      html  css  js  c++  java
  • CF29D

    题目大意

    给定一棵树,要求你按给定的叶子节点顺序对整棵树进行遍历,并且恰好经过2*n-1个点,输出任意一条符合要求的路径

    题解

    每次从叶子节点开始遍历到上一个叶子节点就OK了, 这个就是符合要求的路径

    代码:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <vector>
    using namespace std;
    #define MAXN 305
    vector<int>G[MAXN],ans;
    bool dfs(int rt,int u,int fa)
    {
         if(rt==u) return true;
         int len=G[u].size();
         for(int i=0;i<len;i++)
         {
             int v=G[u][i];
             if(fa==v) continue;
             if(dfs(rt,v,u))
             {
                   ans.push_back(u);
                   return true;
             }
         }
         return false;
    }
    int main()
    {
        //freopen("tree.txt","r",stdin);
        int n;
        scanf("%d",&n);
        for(int i=1; i<n; i++)
        {
            int u,v;
            scanf("%d%d",&u,&v);
            G[u].push_back(v);
            G[v].push_back(u);
        }
        ans.push_back(1);
        int rt=1,v;
        while(scanf("%d",&v)!=EOF)
        {
            dfs(rt,v,-1);
            rt=v;
        }
        dfs(rt,1,-1);
        if(ans.size()!=(2*n-1)) printf("-1
    ");
        else
        {
              for(size_t i=0;i<ans.size();i++) printf("%d ",ans[i]);
              printf("
    ");
        }
        return 0;
    }
  • 相关阅读:
    JavaScript作用域
    JavaScript数据类型
    CSS页面布局(二)
    CSS页面布局(一)
    CCS界面组件
    JavaScript面向对象设计
    python-序列化与反序列化
    python-常用模块
    python-re模块
    python-匿名函数
  • 原文地址:https://www.cnblogs.com/zjbztianya/p/3427819.html
Copyright © 2011-2022 走看看