luogu1613 跑路(倍增)

2021-08-07 21:44:07 字數 562 閱讀 8388

題目:我是超連結

題解:乙個spfa版本的。看看這個2^k就知道是倍增,一開始想用類似求lca的方法,但是發現這樣乙個遠度的只能連乙個點(只有乙個爸爸),但其實可以連到好多點,我們考慮用floyd,f[l][i][j]表示走2^l i可以走到j,那讀入就是f[0][i][j],然後求最短路就ok了。可以用floyd,也可以spfa

**:

#include #include #include #include #define sz 32

using namespace std;

int h[55],mi[sz],tot,nxt[2500],point[55],v[2500],f[sz][55][55],dis[55];

bool c[55];

void addline(int x,int y)

int main()

for (l=1;lq;

q.push(1);

dis[1]=0;

while (!q.empty())

}} printf("%d",dis[n]);

}

洛谷1613跑路(倍增)

題目描述 description 小a的工作不僅繁瑣,更有苛刻的規定,要求小a每天早上在6 00之前到達公司,否則這個月工資清零。可是小a偏偏又有賴床的壞毛病。於是為了保住自己的工資,小a買了乙個十分牛b的空間跑路器,每秒鐘可以跑2 k千公尺 k是任意數 當然,這個機器是用longint存的,所以總...

洛谷 1613 跑路 倍增

題目描述 小a的工作不僅繁瑣,更有苛刻的規定,要求小a每天早上在6 00 6 00 6 00 之前到達公司,否則這個月工資清零。可是小a偏偏又有賴床的壞毛病。於是為了保住自己的工資,小a買了乙個十分牛b的空間跑路器,每秒鐘可以跑2 k2 k 2k千公尺 k是任意自然數 當然,這個機器是用lon gi...

洛谷1613 跑路 倍增 Floyd

首先,我們一定要認識到本題中的最短時間所對應的道路不一定是在起點到終點的最短路。例如,起點到終點的最短路為 15 那麼對 15 進行二進位制拆分的話是 11 11,這時求出的最短時間為4。然而如果有一條長度為 16 的路徑的話最短時間就為 1,顯然比之前求的更優 我們在這裡定義兩個陣列 in td ...