problem 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-1
//bellman:0ms
#include#define inf 1000000000
#define v 205
#define e 1005
int n,m,pre[v],edge[e][3];
int dist[v];
int relax(int u,int v,int c)
return 0;
}int bellman(int src)
dist[src]=0;
for(i=0;i<=n;i++)
if(!flag)break;
} for(j=0;j
djikatra:15ms
#include#include#define maxn 205
#define inf 1000000000
int matrix[maxn][maxn];
int dist[maxn];
char used[maxn];
int n,m;
void init()
}used[flag]=1;
for(j=0;j<=n;j++)
}}int main()
scanf("%d%d",&src,&end);
if(src==end)
djikstra(src);
if(dist[end]!=inf)
printf("%d\n",dist[end]);
else printf("-1\n");
}return 0;
}
floyd 46ms
#include#define maxn 205
#define inf 1000000000
int matrix[maxn][maxn];
int n,m;
void init()
}}void floyd()}}
}}int main()
scanf("%d%d",&start,&end);
if(start==end)
floyd();
if(matrix[start][end]!=inf)
printf("%d\n",matrix[start][end]);
else printf("-1\n");
}}
hdu 1874 暢通工程續
題目 就是裸的單源最短路。做的時候還是遇到了一些錯誤。比如題目上說的,每次要從乙個城鎮到另乙個城鎮時,都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離要短很多。應該在輸入的時候就要更新a b的最短距離。還有一開始開了個n 0x7fffffff 這種題肯定是不行的。因為這個數和其他數相加...
HDU 1874 暢通工程續
problem description 某省自從實行了很多年的暢通工程計畫後,終於修建了很多路。不過路多了也不好,每次要從乙個城鎮到另乙個城鎮時,都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離要短很多。這讓行人很困擾。現在,已知起點和終點,請你計算出要從起點到終點,最短需要行走多少距...
hdu 1874 暢通工程續
水題,但是要注意處理重邊的情況,因為一開始沒處理,結果wa了很多次。include include define inimax 0x7f7f7f7f int dist 210 int s 210 int m,n int graph 205 205 void dijk int begin dist b...