時間限制:1000ms記憶體限制:256000kb
題目描述
背景為了統計小球的方案數,平平已經累壞了。於是,他摘掉了他那800度的眼鏡,躺在樹下休息。
後來,平平發現樹上有乙個特別不一樣的水果,又累又餓的平平打算去把它摘下來。
題目描述
現在,將大樹以乙個n個節點的無向圖的形式給出,每個節點用座標(xi,yi)來表示表示,平平要從第乙個點爬到第n個點,除了從乙個節點爬向另乙個相鄰的節點以外,他還有一種移動方法,就是從乙個節點跳下,到達正下方的某個節點(之間可隔著若干個點和邊),即當xj=xi and yi輸入
兩個整數n,v,n表示節點個數,v表示平平爬樹的速度。
接下來n行,每行包含3個整數x,y,f,x,y是這個點的座標,f是他的父節點(f一定小於這個點的標號,第一行的f為0)。
注意:兩節點間距離按歐幾里德距離計算 dis = sqrt( ( x1 – x2 ) 2+ ( y1 – y2 )2 )
輸出輸出僅包括一行,從1到n所用的最少所需時間t,保留兩位小數。
輸入樣例複製
9 15 0 0
5 5 1
6 5 2
7 6 2
6 9 2
3 6 2
4 5 2
3 2 7
7 2 3
輸出樣例複製
8.13
說明資料規模 對於100%資料,1<=n<=100,1<=v<=10,0<=x,y<=100. 建議使用extended(pas)或double(c and c++)計算,我們對於精度造成的誤差將不予重測。
題解:spfa模板題
const
maxn=100;
maxm=1000;
var w:array[0..maxn,0..maxn]of extended;
a:array[1..maxn,1..2]of longint;
dis:array[0..maxn]of extended;
f:array[0..maxn]of longint;
state:array[1..1000000]of longint;
n,sum:longint;
v:extended;
function dist(x,y:longint):extended;
var xx,yy:longint;
begin
xx:=(a[x,1]-a[y,1])*(a[x,1]-a[y,1]);
yy:=(a[x,2]-a[y,2])*(a[x,2]-a[y,2]);
dist:=sqrt(xx+yy)/v;
end;
function min(a,b:extended):extended;
begin
if adis[now]+w[now,i] then
begin
dis[i]:=dis[now]+w[now,i];
if f[i]=0 then
begin
f[i]:=1;
inc(tail);
state[tail]:=i;
end;
end;
end;
f[now]:=0;
until head>=tail;
end;
begin
init;
spfa(1);
writeln(dis[n]:0:2);
end.
題目 智捅馬蜂窩
背景為了統計小球的方案數,平平已經累壞了。於是,他摘掉了他那800度的眼鏡,躺在樹下休息。後來,平平發現樹上有乙個特別不一樣的水果,又累又餓的平平打算去把它摘下來。題目描述 現在,將大樹以乙個n個節點的無向圖的形式給出,每個節點用座標 xi,yi 來表示表示,平平要從第乙個點爬到第n個點,除了從乙個...
rqnoj86 智捅馬蜂窩
題目描述 背景為了統計小球的方案數,平平已經累壞了。於是,他摘掉了他那800度的眼鏡,躺在樹下休息。後來,平平發現樹上有乙個特別不一樣的水果,又累又餓的平平打算去把它摘下來。題目描述 現在,將大樹以乙個n個節點的無向圖的形式給出,每個節點用座標 xi,yi 來表示表示,平平要從第乙個點爬到第n個點,...
RQNOJ86 智捅馬蜂窩 最短路
乙個座標系上有n nn個點n 1 n 1n 1條邊,有兩種移動方式 經過一條邊從乙個點到達另乙個點,耗時為這條邊長度 v div v v從乙個點垂直跳下到達正下方的另乙個點。耗時為 y j yi 2 g sqrt yj yi 2 g 注意 g gg取10 1010 求從點1 11到點n nn的最小時...