ログインしてください。
提出 #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 | ||
| 結果 |
|
| セット名 | テストケース |
|---|---|
| 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 |