http://acm.hdu.edu.cn/showproblem.php?pid=2544&&最短路

来源:互联网 发布:淘宝广告视频 编辑:程序博客网 时间:2024/06/09 15:18

水题。。。。dijstra算法。。。。

#include<iostream>#include<string.h>#include<algorithm>#include<limits.h>#define M 99999999#define N 105#define  FOR(i,s,t) for(int i=(s);i<=t;++i)using namespace std;int dist[N];int map[N][N];bool visit[N];int n,m;void  Dijstra(){  int now=1;    dist[now]=0;    visit[now]=false;    FOR(i,1,n)    {  FOR(j,1,n)        if(visit[j]&&dist[j]>dist[now]+map[now][j])          dist[j]=dist[now]+map[now][j];          int minx=M;          FOR(j,1,n)          if(visit[j]&&dist[j]<minx)           minx=dist[now=j];           visit[now]=false;     }     cout<<dist[n]<<endl;      }int main(){   while(cin>>n>>m&&n&&m)    {   FOR(i,1,n)         FOR(j,1,n)         { dist[i]=M;            map[i][j]=M;             visit[i]=true;            }            FOR(i,1,m)             { int a,b,c;                cin>>a>>b>>c;                if(map[a][b]>c)                 map[a][b]=map[b][a]=c;                 }                 Dijstra();                  } return 0;        }


原创粉丝点击