C 最短路 spfa 前向星

2021-06-25 08:07:25 字數 1540 閱讀 6565

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,表示u,v之間有一條權值為w(w >= 0)的邊。

最後輸入s,e。

對於每組資料輸出乙個整數代表答案。

3 1

1 2 3

1 2

3

zmx卡資料卡的太厲害了,差點超記憶體,spfa+前向星果斷水過,但是tle了好幾次,我又把**刪掉重新寫的,然後ac了 ,都一樣  不知道為什麼,在下面貼出來,希望各路大神給找找,萬分感謝。

tle的**  7010ms

#include #include #include #include #include #include #include using namespace std;

#define inf 1e19+7

struct node

edge[2000010];

int dis[500010];

int vis[500010];

int head[500010];

int cnt;

int n;

void add(int u,int v,int w)

void spfa(int s,int e)}}

}}int main()

scanf("%d %d",&s,&e);

spfa(s,e);

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

}return 0;

ac**  1200ms

#include #include #include #include #include #include #include using namespace std;

#define inf 999999999

struct node

edge[4000010];

int dis[500010];

int vis[500010];

int head[500010];

int cnt;

int n;

void add(int u,int v,int w)

void spfa(int s,int e)

dis[s]=0;

vis[s]=1;

q.push(s);

while(!q.empty())}}

}}int main()

scanf("%d %d",&s,&e);

spfa(s,e);

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

}return 0;

}



最短路(SPFA 前向星

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的幾個要...

最短路的前向星實現

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 鏈式前...