洛谷 P3905 道路重建 spfa演算法 最短路

2021-09-25 03:18:01 字數 556 閱讀 1915

思路:1:開兩個vector>,乙個邊的權值全部初始化為0,另乙個正常按題目邊的權值存

2:如果該路被破壞,那麼就把正常存的數值copy到要用的vector>中,即保證沒有被破壞的路的權值在計算的時候當作0來處理

3:跑spfa演算法

演算法:spfa

#include using namespace std;

const int maxn=101;

vector>e[maxn],w[maxn];

int n,m,a,b,c,dg,s,t,d[maxn],ing[maxn];

inline void init()

}int main()

cin>>dg;

for(int i=0;i>a>>b;

for(int i=0;i>s>>t;

queueq;

q.push(s);

d[s]=0;

ing[s]=1;

while(!q.empty())}}

cout

}

洛谷P3905 道路重建

此題是顯然的最短路演算法,只是看到一起刪掉的一堆邊感到十分棘手,而且還要求出的是最短新增邊的總長度 但如果仔細觀察就可以發現,我們其實並不用乙個乙個的全部列舉,只需要把新增的邊做最短路就行了。我們可以首先把陣列初始化為乙個較大的數,然後每讀入一條邊,就把此邊的權值記錄,但還要把它清零。為什麼呢?因為...

道路重建 洛谷P3905

題目描述 一場可怕的 後,人們用n個牲口棚 1 n 150,編號1 n 重建了農夫john的牧場。由於人們沒有時間建設多餘的道路,所以現在從乙個牲口棚到另乙個牲口棚的道路是惟一的。因此,牧場運輸系統可以被構建成一棵樹。john想要知道另一次 會造成多嚴重的破壞。有些道路一旦被毀壞,就會使一棵含有p ...

洛谷P3905 道路重建

此題是顯然的最短路演算法,只是看到一起刪掉的一堆邊感到十分棘手,而且還要求出的是最短新增邊的總長度 但如果仔細觀察就可以發現,我們其實並不用乙個乙個的全部列舉,只需要把新增的邊做最短路就行了。我們可以首先把陣列初始化為乙個較大的數,然後每讀入一條邊,就把此邊的權值記錄,但還要把它清零。為什麼呢?因為...