最短路(SPFA 前向星

2021-09-02 07:25:40 字數 922 閱讀 8365

problem description

輸入t,n分別代表有t條通道,和n個地點。接下來t行u,v,w分別表示u地點於v地點之間通道消費,有重複邊

sample input

5 51 2 20

2 3 30

3 4 20

4 5 20

1 5 100

sample output

運用spfa的幾個要點:

1, 首先要建立乙個佇列裡面要存能夠更新其他點的點;

2, 首先要做初始化,所有的點都沒有被標記過,並且每個點到起點的dist[i] = inf;

3, 將起點push into queue,之後把這個點進行標記說明這個點在佇列裡面,然後dist[起點] = 0;顯然不是嗎?

4, 對queue不為空作為條件進行while迴圈更新其他點;

while(!q.empty())}}

}

#include #include #include #include #include #define inf 0x3f3f3f3f

#define sum 521

using namespace std;

struct node

map[40005];

int n, head[1005];

int vis[1005], dist[1005];

void spfa(int u)

vis[u] = 1;

dist[u] = 0;

q.push(u);

while(!q.empty())}}

}printf("%d", dist[1]);

}int main()

spfa(n);

}return 0;

}

C 最短路 spfa 前向星

time limit 7000ms memory limit 65536k 有疑問?點這裡 給出乙個帶權無向圖,包含n個點,m條邊。求出s,e的最短路。保證最短路存在。多組輸入。對於每組資料。第一行輸入n,m 1 n n 5 10 5,1 m m 2 10 6 接下來m行,每行三個整數,u,v,w,...

最短路的前向星實現

include include include include include include include include using namespace std const int maxn 1000 const int maxm maxn maxn const int inf 0x3f3f3...

鏈式前向星教學詳解最短路

鏈式前向星 圖的儲存一般有兩種 鄰接矩陣 鄰接表 鄰接表包括一種東西叫前向星 若圖是稀疏圖,邊很少,開二維陣列a很浪費 若點很多 如10000個點 a 10000 10000 又會爆.只能用前向星做.前向星的效率不是很高,優化後為鏈式前向星,直接介紹鏈式前向星。資料結構 struct edg 鏈式前...