3 条题解

  • 0
    @ 2023-6-28 16:05:34

    既然父子关系未知,那我们就建无根树(无环无向连通图),然后从根结点 11 开始 dfs,在遍历的过程中确定父子关系并求出深度。

    #include <bits/stdc++.h>
    using namespace std;
    int n,a,b;
    int d[21],f[21];
    vector<int> e[21];
    void dfs(int u,int fa){;//因为是无向图,要加一个参数防止重复
        d[u]=d[fa]+1;
        for (int i=0;i<e[u].size();i++){
            int v=e[u][i];
            if (v==fa){
                continue;
            }
            f[v]=u;
            dfs(v,u);
        }
    }
    int main(){
        cin>>n;
        for (int i=1;i<n;i++){
            cin>>a>>b;
            e[a].push_back(b);
            e[b].push_back(a);
        }
        dfs(1,0)
        for (int i=2;i<=n;i++){
            cout<<i<<" "<<f[i]<<" "<<d[i]<<endl;
        }
        return 0;
    }
    

    话说我还没看懂老师的 dfs 是怎么写的,可能是因为我只看了局部?

    • -2
      @ 2022-4-19 22:40:23

      严禁抄题解,发现后取消成绩

      • -2
        @ 2021-12-3 15:48:46
        
        void dfs(int u,int fa)
        {
        	for(int i=0;i<e[u].size();i++)
        	{
        		int v=e[u][i];
        		if(v==fa)
        		{
        			father[u].push_back(v);
        			continue;
        		}
        		de[v]=de[u]+1;
        		dfs(v,u);
        	}
        }
        • 1

        信息

        ID
        1167
        时间
        1000ms
        内存
        128MiB
        难度
        8
        标签
        递交数
        47
        已通过
        6
        上传者