不明白為啥一定有乙個點re,而同樣的c++用int就能跑過(吃屎了有木有)
此刻我內心是崩潰的= =
而且在bz和code上,兩個程式跑出來的結果也是不一樣的,乙個re乙個a了
先發乙個95分的吧,到時候我再查一下
varpre,last,other,long:
array[0..2002333] of
qword;
k,l,n,tot,x,y,z:qword;
ans,d:qword;
i,j:longint;
procedure
add(x,y,z:qword);
begin
inc(tot);
pre[tot]:=last[x];
last[x]:=tot;
other[tot]:=y;
long[tot]:=z;
end;
function
dfs(x,p:qword):qword;
vart,i,v,size:qword;
begin
i:=1
; v:=1
; size:=1
; i:=last[x];
while i<>0
dobegin
v:=other[i];
if v=p then
begin i:=pre[i]; continue; end
; t:=dfs(v,x);
inc(size,t);
if n>2*t then d:=n-2*t else d:=2*t-n;
inc(ans,d*long[i]);
i:=pre[i];
end;
dfs:=size;
end;
begin
readln(j);
for i:=1
to j-1
dobegin
readln(x,y,z);
add(x,y,z);
add(y,x,z);
end;
n:=j;
dfs(
1,0);
writeln(ans);
end.
JZOJ 1244 修建道路 最小生成樹
傳送門 給出n nn個點和已經建好的m mm條邊,求我們需要修建的最小代價使得n nn個點可以互相到達 正常最小生成樹隨便跑,對於已經修好的邊就直接在開始就放在乙個塊裡 include include include include include include include include d...
Tyvj4878 道路修建(環套樹 單調佇列)
題面 題意 給你3000棵環套樹,邊長都為1,問兩個點的最短距離的最大值。根據環套樹的套路,先把環找出來,然後dfs每棵外向樹。對於每個點,記錄l1為該點向下最長鏈的深度,l2為為該點向下次長鏈的深度,l1 l2就可能成為答案。這樣就處理了路徑在每棵樹上的情況。我們考慮路徑跨越了環的情況。想到在吃雞...
SDOI2015 道路修建(線段樹維護連通性)
這道題可以看做是 shoi2008 堵塞的交通的加強版,由於形同模擬不同人的寫法差別很大,強烈建議理解了原理之後自己獨立寫 給乙個 2 m 的網格圖,每次操作支援修改一條邊的權值,和查詢 l,r 含 的最小生成樹 如果做過上面那道題就很容易知道這道題是考 毒瘤的 線段樹 只需要維護8個標記 因寫法而...