訓練 最短路 01

2021-06-28 14:46:36 字數 1750 閱讀 8835

time limit:1000msmemory limit:32768kb64bit io format:%i64d & %i64u

description

某省自從實行了很多年的暢通工程計畫後,終於修建了很多路。不過路多了也不好,每次要從乙個城鎮到另乙個城鎮時,都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離要短很多。這讓行人很困擾。

現在,已知起點和終點,請你計算出要從起點到終點,最短需要行走多少距離。

input

本題目包含多組資料,請處理到檔案結束。

每組資料第一行包含兩個正整數n和m(0

output

對於每組資料,請在一行裡輸出最短需要行走的距離。如果不存在從s到t的路線,就輸出-1.

sample input

3 3

0 1 1

0 2 3

1 2 1

0 23 1

0 1 1

1 2

sample output

2

-1 開始的時候用的bellman—ford,因為考慮到輸入,結果跑了15ms,後來用的dijlstra,跑了0ms

***dijlstra

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

using namespace std;

int map[110][110],dis[110],sum,n,bj,mm;

bool vis[110];

void dijkstra()

vis[1]=true;

for(i=1; i<=n-1; i++)

}vis[bj]=true;

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

}}int main()

dijkstra();

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

}return 0;

}***floyd#include #include #include #include #include#define inf 0x3f3f3f3f

using namespace std;

int map[110][110],n;

void floyd()}}

}}int main()

floyd();

printf("%d\n",map[1][n]);

}return 0;

}

***bellman_ford

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

using namespace std;

int n,top,dis[220];

struct node

st[30000];

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

void bellman_ford()}}

vis[t]=false;

}}int main()

spfa();

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

}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...

演算法訓練 最短路

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