藍橋杯 演算法訓練 最短路(spfa)

2021-06-29 03:06:37 字數 949 閱讀 2205

問題描述

給定乙個n個頂點,m條邊的有向圖(其中某些邊權可能為負,但保證沒有負環)。請你計算從1號點到其他點的最短路(頂點從1到n編號)。

輸入格式

第一行兩個整數n, m。

接下來的m行,每行有三個整數u, v, l,表示u到v有一條長度為l的邊。

輸出格式

共n-1行,第i行表示1號點到i+1號點的最短路。

樣例輸入

3 3

1 2 -1

2 3 -1

3 1 2

樣例輸出-1

-2資料規模與約定

對於10%的資料,n = 2,m = 2。

對於30%的資料,n <= 5,m <= 10。

對於100%的資料,1 <= n <= 20000,1 <= m <= 200000,-10000 <= l <= 10000,保證從任意頂點都能到達其他所有頂點。

這裡**是使用鄰接表的陣列形式實現的,因為n,m的數量級太大所以不能用鄰接矩陣形式。

bellman_ford效率低會超時,所以用spfa演算法

#include

#include

#include

#include

using namespace std;

struct node

edge[200010];

int head[20010],visit[20010],dist[20010];

int n,m;

void spfa(int start)

dist[start]=0;  visit[start]=1;

q.push(start);

while(!q.empty())}}

}int main()

spfa(1);

for(int i=2;i<=n;i++)

cout}

藍橋杯 最短路(SPFA演算法)

時間限制 1.0s 記憶體限制 256.0mb 給定乙個n個頂點,m條邊的有向圖 其中某些邊權可能為負,但保證沒有負環 請你計算從1號點到其他點的最短路 頂點從1到n編號 第一行兩個整數n,m。接下來的m行,每行有三個整數u,v,l,表示u到v有一條長度為l的邊。共n 1行,第i行表示1號點到i 1...

藍橋杯 演算法訓練 最短路

問題描述 給定乙個n個頂點,m條邊的有向圖 其中某些邊權可能為負,但保證沒有負環 請你計算從1號點到其他點的最短路 頂點從1到n編號 輸入格式 第一行兩個整數n,m。接下來的m行,每行有三個整數u,v,l,表示u到v有一條長度為l的邊。輸出格式 共n 1行,第i行表示1號點到i 1號點的最短路。樣例...

演算法訓練 最短路 藍橋杯

問題描述 給定乙個n個頂點,m條邊的有向圖 其中某些邊權可能為負,但保證沒有負環 請你計算從1號點到其他點的最短路 頂點從1到n編號 輸入格式 第一行兩個整數n,m。接下來的m行,每行有三個整數u,v,l,表示u到v有一條長度為l的邊。輸出格式 共n 1行,第i行表示1號點到i 1號點的最短路。樣例...