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