hdu2544

来源:互联网 发布:js实现div逆时针旋转 编辑:程序博客网 时间:2024/05/23 17:26

第二发最短路dijkstra

#include<stdio.h>#include<math.h>#define max 10000000int a,b,m,i,j,k,n,x;int dis[500],c[500][500];void dijkstra(int star,int end,int c[500][500],int dis[]){    int w[500]={0},v;    dis[star]=0;    for(i=1;i<=n;i++)    {        if(c[star][i]!=max)        dis[i]=dis[star]+c[star][i];    }    w[star]=1;    for(i=1;i<=n;i++)    {       int tem=max;        for(j=1;j<=n;j++)        {            if(w[j]==0&&dis[j]<tem)            {                tem=dis[j];                v=j;            }        }        w[v]=1;        for(j=1;j<=n;j++)        {            if(dis[j]>dis[v]+c[v][j])            dis[j]=dis[v]+c[v][j];        }    }     printf("%d\n",dis[end]);} int main(){  while(scanf("%d %d",&n,&m)!=EOF)  {    if(n==0&m==0)break;    for(i=1;i<=n;i++)      dis[i]=max;    for(i=1;i<=n;i++)      for(k=1;k<=n;k++)        c[i][k]=max;    for(i=1;i<=m;i++)    {         scanf("%d %d %d",&a,&b,&x);        if(c[a][b]>x){            c[a][b]=x;            c[b][a]=x;        }           }    dijkstra(1,n,c,dis);  }   return 0;} 
0 0
原创粉丝点击