杭电 1874 畅通工程续
2013-07-30 14:38
316 查看
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1874
本题最短路问题,我用的是dijkstra算法,这题不难,但是一开始以为不会遇到重边的问题,所以WA了一次!
View Code
本题最短路问题,我用的是dijkstra算法,这题不难,但是一开始以为不会遇到重边的问题,所以WA了一次!
#include <stdio.h> #define MAXN 200 #define INF 100000 int mat[MAXN][MAXN]; int min[MAXN]; void Dijkstra(int n, int s) { int v[MAXN], i, j, k; for( i = 0; i < n; i++ ) v[i] = 0, min[i] = INF; for( min[s] = 0, j = 0; j < n; j++ ) { for( k = -1, i = 0; i < n; i++ ) if( (!v[i]) && ((k == -1)||(min[i] < min[k])) ) k = i; for( v[k] = 1, i = 0; i < n; i++ ) if( (!v[i]) && (min[k] + mat[k][i] < min[i]) ) min[i] = min[k] + mat[k][i]; } } int main() { int n, m, i, j, k, s, t, temp; while(scanf( "%d%d", &n,&m ) != EOF) { for( i = 0; i < n; i++ ) for( j = 0; j < n; j++ ) mat[i][j] = INF; /*for( i = 0; i < n; i++ ) { for( j = 0; j < n; j++ ) printf("%d ",mat[i][j]); printf("\n"); } printf("\n\n");*/ for( k = 0; k < m; k++ ) { scanf( "%d%d%d", &i, &j, &temp ); if( temp < mat[i][j] ) mat[j][i] = mat[i][j] = temp; } /*for( i = 0; i < n; i++ ) { for( j = 0; j < n; j++ ) printf("%d ",mat[i][j]); printf("\n"); }*/ scanf( "%d%d", &s, &t ); Dijkstra(n,s); /*for( i = 0; i < n; i++ ) { printf("%d ",min[i]); } printf( "\n" ); for( i = 0; i < n; i++ ) { printf("%d ",pre[i]); } printf( "\n" );*/ if( min[t] == INF ) printf( "-1\n" ); else printf("%d\n",min[t]); } return 0; }
View Code
相关文章推荐
- 杭电acm-1874畅通工程续
- 杭电 1874 畅通工程续
- 杭电1874 畅通工程续(最短路dijkstra)
- 【杭电1874】畅通工程续
- 杭电1874(畅通工程续)
- 杭电1874畅通工程续
- 杭电1874-畅通工程续(最短路径,dijkstra,spfa,floyd)
- 杭电OJ-1874_畅通工程续
- 杭电 1874 畅通工程续(Dijkstra)
- 【杭电OJ】1874--畅通工程续-最短路(dijkstra)
- 畅通工程续HDU杭电1874【dijkstra算法 || SPFA】
- 杭电acm1874 畅通工程续
- 【杭电oj】1874 - 畅通工程续(dijkstra,注意注意!)
- 杭电 hdu 1874 畅通工程续
- 杭电-1874 畅通工程续 (Floyd&&dijkstra)
- 杭电1874畅通工程续
- 杭电1874-畅通工程续
- 杭电1874_畅通工程续(Dijkstra算法)——java
- 杭电1874-畅通工程续(SPFA算法)
- 杭电1874畅通工程续 -最短路径