time limit:1000msmemory limit:32768kb64bit io format:%i64d & %i64u
description
某省自從實行了很多年的暢通工程計畫後,終於修建了很多路。不過路多了也不好,每次要從乙個城鎮到另乙個城鎮時,都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離要短很多。這讓行人很困擾。
現在,已知起點和終點,請你計算出要從起點到終點,最短需要行走多少距離。
input
本題目包含多組資料,請處理到檔案結束。
每組資料第一行包含兩個正整數n和m(0
output
對於每組資料,請在一行裡輸出最短需要行走的距離。如果不存在從s到t的路線,就輸出-1.
sample input
3 30 1 1
0 2 3
1 2 1
0 23 1
0 1 1
1 2
sample output
2***bellman_ford-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;
}
#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號點的最短路。樣例...