比赛 “Asm.Def战记之太平洋”杯 评测结果 AAAAAATTTT
题目名称 Asm.Def的基本算法 最终得分 60
用户昵称 Ten.X 运行时间 5.014 s
代码语言 Pascal 内存使用 0.65 MiB
提交时间 2015-11-02 11:58:16
显示代码纯文本
var ans:int64;n,ii,jj,mm:longint;f,w:array[0..100005]of longint;
function find_f(y:longint):longint;
begin
exit(f[y]);
end;
function find_d(x:longint):longint;
var tot:longint;
begin
tot:=2;
if x=1 then exit(1);
while find_f(x)<>1 do begin x:=f[x];inc(tot);end;
exit(tot);
end;
function lca(i,j:longint):longint;
var d1,d2,k:longint;
begin
if i=j then exit(i);
if f[i]=f[j] then exit(f[i]);
d1:=find_d(f[i]);d2:=find_d(f[j]);
if d1=d2 then exit(lca(f[i],f[j])) else
if d1<d2 then for k:=1 to d2-d1 do j:=f[j]
else for k:=1 to d1-d2 do i:=f[i];
exit(lca(i,j));
end;
begin
assign(input,'asm_algo.in');
assign(output,'asm_algo.out');
reset(input);
rewrite(output);
f[1]:=1;
read(n,w[1]);
ans:=0;
mm:=1000000007;
for ii:=2 to n do read(f[ii],w[ii]);
for ii:=1 to n do
for jj:=1 to n do
ans:=((((((((w[ii] mod mm)*(w[jj] mod mm))mod mm)mod mm)*(w[lca(ii,jj)] mod mm))mod mm)mod mm)+(ans mod mm))mod mm;
write(ans);
close(input);
close(output);
end.