藍橋杯演算法訓練 最短路(map實現鄰接表)

2021-06-29 05:18:49 字數 1177 閱讀 9822

演算法訓練 最短路  

時間限制:1.0s   記憶體限制:256.0mb

問題描述

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

輸入格式

第一行兩個整數n, m。

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

輸出格式

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

樣例輸入

3 31 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,保證從任意頂點都能到達其他所有頂點。

解題報告:這題的話,用mapa[n]來實現鄰接表是一種很好的手段,不會超時。map結點的訪問是o(lgn)但是對於稀疏圖,結點數目大大減少了,方法是spfa。

#include #include #include using namespace std;

const int oo = 0xfffffff;

const int maxn = 20005;

//int a[maxn][maxn];

hashmapa[maxn];

int m, n;

int dist[maxn];

int vis[maxn];

//int cnt[maxn];

queueq;

void spfa()

dist[1] = 0;

vis[1] = 0;

// cnt[1] ++;

q.push(1);

while(!q.empty())

// for (int i = 1; i <= n; i ++)

}} }

// return 1;

}int main()

} spfa();

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

return 0;

}

藍橋杯 演算法訓練 最短路

問題描述 給定乙個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號點的最短路。樣例...