提出 #582832


ソースコード 拡げる

#include<bits/stdc++.h>
#define N 100100
using namespace std;
int p[N][20],dep[N],far[N],add[N],id[N];
vector<int> v[N];
int go(int a,int x){
	int r=a;
	for(int i=0;i<20;i++){
		if(x&(1<<i)) r=p[r][i];
	}
	return r;
}
int lca(int a,int b){
	if(dep[a]>dep[b]){
		a=go(a,dep[a]-dep[b]);
	}
	else{
		b=go(b,dep[b]-dep[a]);
	}
	if(a==b) return a;
	for(int i=19;i>=0;i--){
		if(p[a][i]!=p[b][i]) a=p[a][i],b=p[b][i];
	}
	return p[a][0];
}
bool cmp(int i,int j){
	return id[p[i][0]]<id[p[j][0]]||p[i][0]==p[j][0]&&i<j;
}
int main(){
	int n;
	long long ans=0;
	scanf("%d",&n);
	for(int i=2;i<=n;i++) scanf("%d",&p[i][0]);
	p[1][0]=1;
	for(int i=1;i<20;i++){
		for(int j=1;j<=n;j++){
			p[j][i]=p[p[j][i-1]][i-1];
		}
	}
	dep[1]=0;
	for(int i=2;i<=n;i++){
		dep[i]=dep[p[i][0]]+1;
		far[i]=dep[i];
		v[dep[i]].push_back(i);
	}
	v[0].push_back(1);
	for(int i=n;i>1;i--){
		far[p[i][0]]=max(far[i],far[p[i][0]]);
		add[dep[i]]++;
		add[far[i]+1]--;
	}
	for(int i=1;i<=n&&!v[i].empty();i++){
		sort(v[i].begin(),v[i].end(),cmp);
		for(int j=0;j<v[i].size();j++) id[v[i][j]]=j;
		add[i]+=add[i-1];
		ans+=dep[v[i].front()]+dep[v[i-1].back()]-2*dep[lca(v[i].front(),v[i-1].back())];
		ans+=2*(add[i]-i);
	}
	printf("%lld\n",ans);
	return 0;
}

提出情報

提出日時
問題 A - Breadth-First Search by Foxpower
ユーザ NCTU_Thor
言語 C++ (GCC 4.4.7)
得点 100
コード長 1289 Byte
結果 AC
実行時間 105 ms
メモリ 15648 KiB

コンパイルエラー

./Main.cpp: In function ‘int main()’:
./Main.cpp:32: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result
./Main.cpp:33: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result

ジャッジ結果

セット名 All
得点 / 配点 100 / 100
結果
AC × 61
セット名 テストケース
All 00_sample_00, 00_sample_01, 00_sample_02, 10_Random_000005_00, 10_Random_000006_04, 10_Random_000008_08, 10_Random_000033_05, 10_Random_000042_01, 10_Random_000080_09, 10_Random_000358_10, 10_Random_000463_06, 10_Random_000822_02, 10_Random_007468_03, 10_Random_013086_07, 10_Random_096889_11, 10_Random_100000_12, 10_Random_100000_13, 20_Binary_000032_00, 20_Binary_001000_01, 20_Binary_010000_02, 20_Binary_100000_03, 30_Star_100000_00, 30_Star_100000_01, 40_Skew_000023_09, 40_Skew_000031_01, 40_Skew_000043_05, 40_Skew_000044_08, 40_Skew_000046_04, 40_Skew_000047_00, 40_Skew_000354_02, 40_Skew_000539_07, 40_Skew_000814_10, 40_Skew_000853_11, 40_Skew_000935_03, 40_Skew_000951_06, 40_Skew_100000_12, 40_Skew_100000_13, 40_Skew_100000_14, 40_Skew_100000_15, 40_Skew_100000_16, 40_Skew_100000_17, 40_Skew_100000_18, 40_Skew_100000_19, 40_Skew_100000_20, 40_Skew_100000_21, 50_PowerRandom_000047_00, 50_PowerRandom_000068_04, 50_PowerRandom_000094_08, 50_PowerRandom_000126_09, 50_PowerRandom_000497_05, 50_PowerRandom_000852_01, 50_PowerRandom_008600_02, 50_PowerRandom_015225_10, 50_PowerRandom_040917_06, 50_PowerRandom_100000_03, 50_PowerRandom_100000_07, 50_PowerRandom_100000_11, 80_line_00, 81_max_ans_00, 90_teuch_00, 90_teuch_01
ケース名 結果 実行時間 メモリ
00_sample_00 AC 27 ms 3104 KiB
00_sample_01 AC 27 ms 3104 KiB
00_sample_02 AC 28 ms 3100 KiB
10_Random_000005_00 AC 28 ms 3236 KiB
10_Random_000006_04 AC 27 ms 3232 KiB
10_Random_000008_08 AC 28 ms 3108 KiB
10_Random_000033_05 AC 27 ms 3108 KiB
10_Random_000042_01 AC 27 ms 3108 KiB
10_Random_000080_09 AC 28 ms 3108 KiB
10_Random_000358_10 AC 26 ms 3096 KiB
10_Random_000463_06 AC 28 ms 3104 KiB
10_Random_000822_02 AC 28 ms 3232 KiB
10_Random_007468_03 AC 33 ms 3872 KiB
10_Random_013086_07 AC 35 ms 4384 KiB
10_Random_096889_11 AC 88 ms 12260 KiB
10_Random_100000_12 AC 86 ms 12696 KiB
10_Random_100000_13 AC 87 ms 12704 KiB
20_Binary_000032_00 AC 29 ms 3104 KiB
20_Binary_001000_01 AC 29 ms 3360 KiB
20_Binary_010000_02 AC 38 ms 4252 KiB
20_Binary_100000_03 AC 97 ms 12704 KiB
30_Star_100000_00 AC 79 ms 12564 KiB
30_Star_100000_01 AC 80 ms 12572 KiB
40_Skew_000023_09 AC 30 ms 3100 KiB
40_Skew_000031_01 AC 29 ms 3232 KiB
40_Skew_000043_05 AC 30 ms 3088 KiB
40_Skew_000044_08 AC 27 ms 3108 KiB
40_Skew_000046_04 AC 30 ms 3108 KiB
40_Skew_000047_00 AC 38 ms 3092 KiB
40_Skew_000354_02 AC 30 ms 3104 KiB
40_Skew_000539_07 AC 30 ms 3148 KiB
40_Skew_000814_10 AC 29 ms 3236 KiB
40_Skew_000853_11 AC 29 ms 3228 KiB
40_Skew_000935_03 AC 29 ms 3240 KiB
40_Skew_000951_06 AC 29 ms 3236 KiB
40_Skew_100000_12 AC 98 ms 15272 KiB
40_Skew_100000_13 AC 96 ms 13216 KiB
40_Skew_100000_14 AC 97 ms 12580 KiB
40_Skew_100000_15 AC 97 ms 12584 KiB
40_Skew_100000_16 AC 91 ms 12712 KiB
40_Skew_100000_17 AC 88 ms 12720 KiB
40_Skew_100000_18 AC 88 ms 12704 KiB
40_Skew_100000_19 AC 85 ms 12708 KiB
40_Skew_100000_20 AC 95 ms 12572 KiB
40_Skew_100000_21 AC 86 ms 12580 KiB
50_PowerRandom_000047_00 AC 31 ms 3052 KiB
50_PowerRandom_000068_04 AC 29 ms 3100 KiB
50_PowerRandom_000094_08 AC 28 ms 3112 KiB
50_PowerRandom_000126_09 AC 29 ms 3104 KiB
50_PowerRandom_000497_05 AC 28 ms 3104 KiB
50_PowerRandom_000852_01 AC 29 ms 3236 KiB
50_PowerRandom_008600_02 AC 33 ms 3872 KiB
50_PowerRandom_015225_10 AC 38 ms 4508 KiB
50_PowerRandom_040917_06 AC 53 ms 7008 KiB
50_PowerRandom_100000_03 AC 89 ms 12712 KiB
50_PowerRandom_100000_07 AC 87 ms 12576 KiB
50_PowerRandom_100000_11 AC 88 ms 12700 KiB
80_line_00 AC 97 ms 15648 KiB
81_max_ans_00 AC 105 ms 13792 KiB
90_teuch_00 AC 27 ms 3108 KiB
90_teuch_01 AC 27 ms 3108 KiB