hdu 2544 最短路

来源:互联网 发布:武藏点胶机200s编程 编辑:程序博客网 时间:2024/06/05 20:47

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544

题目思路:同最短路模版~这次一次就过了。。比上一题强多了。。

AC代码:

#include<stdio.h>#include<string.h>#define M 0xfffffff#define N 105int n,m,map[N][N],dis[N],vis[N];void dijkstra(){    int cur,next,min,i,j=n;    for(i=1;i<=n;i++)        dis[i]=M;    dis[1]=0;    cur=1;    while(1)    {        vis[cur]=1;        min=M;        for(i=1;i<=n;i++)        {            if(vis[i])continue;            if(dis[cur]+map[cur][i]<dis[i])                dis[i]=dis[cur]+map[cur][i];            if(dis[i]<min){                min=dis[i],next=i;            }        }        cur=next;        if(cur==n)break;    }    printf("%d\n",dis[n]);}int main(){    int i,j,a,b,c;    while(~scanf("%d%d",&n,&m),m+n)    {        memset(vis,0,sizeof(vis));        for(i=1;i<=n;i++)            for(j=1;j<=n;j++)                map[i][j]=map[j][i]=(i==j?0:M);        for(i=0;i<m;i++){            scanf("%d%d%d",&a,&b,&c);            map[a][b]=map[b][a]=c;        }        dijkstra();    }    return 0;}
AC截图:



0 0
原创粉丝点击