zoukankan      html  css  js  c++  java
  •  树,或者深林 变成二叉树:

    儿子变做儿子 ,兄弟 便有儿子 

    小注意 : 定义2个父亲。

    #include <bits/stdc++.h>
    using namespace std;
    #define ri register int 
    #define M 105
    
    int n,m;
    int fa[M],f[M];
    vector <int> q,p[M];
    int flag[M];
    void dfs(int a)
    {
        
        //if(p[a].size())
        sort(p[a].begin(),p[a].begin()+p[a].size());
        for(ri i=0;i<p[a].size()&&i<1;i++)
        {
            f[p[a][i]]=a;
           flag[p[a][i]]=1;
            dfs(p[a][i]);
            break;
        }
        int b=fa[a];
        
        if(a!=0)
        {
         //if(p[b].size())
         sort(p[b].begin(),p[b].begin()+p[b].size());
         for(ri i=0,trmp=0;i<p[b].size();i++)
         {
            if(!flag[p[b][i]])
            {
                flag[p[b][i]]=1;
                f[p[b][i]]=a;
                dfs(p[b][i]);
                break;
            }
         } 
        }
    }
    int main(){
        
        scanf("%d%d",&n,&m);
        for(ri i=1;i<=m;i++)
        {
            int a,b;
            scanf("%d%d",&a,&b);
            p[a].push_back(b);
            fa[b]=a;
        }
        for(ri i=1;i<=n;i++)
        {
            if(fa[i]==0)
            q.push_back(i);
        }
        for(ri i=0;i<q.size();i++)
        {
            int a=q[i];
            fa[a]=0;
            p[0].push_back(a);
        }
        dfs(0);
        for(ri i=1;i<=n;i++)
        printf("%d
    ",f[i]); 
        
    }
    变变变
  • 相关阅读:
    软件测试学习随笔(1) 引言
    集成测试
    SPM-using Maven and Juint
    验收测试
    白盒测试学习
    编码的UI测试
    测试闰年
    黑盒测试续
    黑盒测试方法-等价类划分
    对软件测试的理解
  • 原文地址:https://www.cnblogs.com/Lamboofhome/p/15455738.html
Copyright © 2011-2022 走看看