題目 智捅馬蜂窩

2022-05-31 11:57:12 字數 1144 閱讀 4202

背景為了統計小球的方案數,平平已經累壞了。於是,他摘掉了他那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,保留兩位小數。

簡單最短路問題,但要考慮完全。

因為可以跳動,跳到某個樹杈再往相反的方向可能更優,這是題目敘述不清。

乙個點可以從父節點爬過來

這個點也可以爬到父節點。。。

1 #include2 #include3 #include4

//#include

5using

namespace

std;6//

ifstream fin("cin.in");78

intn;

9double v,dis[101][101],x[101],y[101

];10

11int

main()

1232

33for(int k=1;k<=n;++k)

34for(int i=1;i<=n;++i)

35for(int j=1;j<=n;++j)

36if(i!=j&&dis[i][j]>dis[i][k]+dis[k][j])

37 dis[i][j]=dis[i][k]+dis[k][j];

3839 printf("

%.2lf\n

",dis[1

][n]);

40//

system("pause");

41return0;

4243 }

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的最小時...

NOIP2018複習 智捅馬蜂窩(最短路)

時間限制 1000ms記憶體限制 256000kb 題目描述 背景為了統計小球的方案數,平平已經累壞了。於是,他摘掉了他那800度的眼鏡,躺在樹下休息。後來,平平發現樹上有乙個特別不一樣的水果,又累又餓的平平打算去把它摘下來。題目描述 現在,將大樹以乙個n個節點的無向圖的形式給出,每個節點用座標 x...