HDOJ-2544最短路

来源:互联网 发布:金融网络平台 编辑:程序博客网 时间:2024/06/05 07:51

不能再直白的题了:

#include<cstdio>#include<cstring>using namespace std;const int inf=0x3F3F3F3;const int N=105;int f[N][N],dist[N],vis[N];int n,m;int min(int x,int y){    return x<y?x:y;}void Dijkstra(int u){    int i,j,pos,minm;    for(i=1;i<=n;i++)    {        dist[i]=f[u][i];        vis[i]=0;    }    dist[u]=0;    vis[u]=1;    for(i=1;i<=n;i++)    {        pos=u;        minm=inf;        for(j=1;j<=n;j++)            if(!vis[j]&&dist[j]<minm)            {                pos=j;                minm=dist[j];            }        vis[pos]=1;        for(j=1;j<=n;j++)        {            if(!vis[j])                dist[j]=min(dist[j],dist[pos]+f[pos][j]);        }    }}void work(){    int i,a,b,l;    memset(f,0X3F,sizeof(f));    for(i=1;i<=m;i++)    {        scanf("%d%d%d",&a,&b,&l);        f[a][b]=f[b][a]=min(f[a][b],l);    }    Dijkstra(1);    printf("%d\n",dist[n]);}int main(){    while(scanf("%d%d",&n,&m),n||m)        work();    return 0;}


0 0