演算法訓練 最短路

2021-08-30 08:49:37 字數 1291 閱讀 2086

問題描述

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

這裡**:記憶體過大

#include

#include

#define inf 99999

using namespace std;

int dp[20010][20010];

int view[20010];

int m=99999;

int path[20010];

int a;

int s=2;

void dfs(int cur, int dis)

//        }

cout< dis)  //更新最小路徑

return;

}for (i=1;i<=a;++i)  }}

int main()

for(int i=1;i<=b;i++)

view[1]=1;

path[1]=1;

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

dfs(1,0);

return 0;

}改進後:

#include

#include

#include

using namespace std;

const int maxn = 20001;

int floyd[maxn][maxn];

int main()

for (int j = 1; j <= n; j++)

for (int k = 1; k <= n; k++)

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

cout << floyd[1][m] << endl;

return 0;

}

演算法訓練 最短路

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

演算法訓練 最短路

最近在學習一些常見的演算法,演算法這東西不練是不行的,所以學習的同時也找了些題來練。我找的題目 於 vjudge 上的 kuangbin帶你飛專題訓練。每做完乙個專題,我都會寫一篇部落格整理一下這個專題。現在這個專題是,圖論中的最短路。最短路相關的演算法有很多,在專題訓練中會用到的有 dijkstr...

演算法訓練 最短路

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