1 条题解

  • 0
    @ 2026-5-17 14:26:51
    #include <bits/stdc++.h>
    using namespace std;
    
    int n,x,f[500005],l[500005],r[500005],d[5000005];
    
    int dfs(int x) {
    	if (x == 1) return 0;
    	if (d[x] == 0) d[x] = dfs(f[x]) + 1;
    	return d[x];
    }
    
    int main () {
    	cin >> n;
    	for (int i = 1;i <= n;i++) {
    		cin >> x;
    		f[2 * i + 1] = x;
    		f[2 * i] = x;
    		l[x] = 2 * i;
    		r[x] = 2 * i + 1;
    	}
    	for (int i = 1;i <= 2 * n + 1;i++) printf("%d\n",dfs(i));
    	return 0;
    } 
    
    • 1

    信息

    ID
    7752
    时间
    2000ms
    内存
    1024MiB
    难度
    6
    标签
    递交数
    26
    已通过
    11
    上传者