SPFA P3905 道路重建

2022-05-27 19:24:17 字數 1089 閱讀 5039

破壞掉一些路徑,修復他的代價就是該路徑的長度,沒有破壞的路徑,修復它的代價是0(*鏈式前向星建圖)

spfa求最短路:

1 #include 2 #include 3 #include 4 #include 5 #include 6

using

namespace

std;

7int

n,m,d;

8int

a,b;

9int

x,y;

10int dis[10000

];11

bool vis[10000

];12

bool mark[1000][1000

];13

struct

node

14edge[10000

];17

struct

ask18

ed[10000

];23

int head [10000

];24

int tot =0;25

void add (int u,int v,int

w)26

32void spfa(int

s)33

39 q.push(s);//

放入起點

40 dis[s]=0;//

自己到自己為0;

41 vis[s]=1;42

while(!q.empty())54}

55}56}

57}58int

main()

5966 scanf ("

%d",&d);

67for (int i = 1;i <= d;i++)

6873 scanf ("

%d%d

",&a,&b);

74for (int i = 1;i <= m;i++)

7581

else

8286}87

spfa(a);

88 cout89return0;

90 }

P3905 道路重建

p3905 道路重建 我一開始想錯了,我的是類似kruskal,把毀壞的邊從小到大加,並且判斷聯通性。但是這有乙個問題,你可能會多加,就是這條邊沒用,但是它比較小,你也加上了。居然還有10分,資料也是水水的。include include include include include includ...

洛谷P3905 道路重建

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

道路重建 洛谷P3905

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