hdu-1874 畅通工程续

来源:互联网 发布:流体力学仿真软件 编辑:程序博客网 时间:2024/06/06 23:50

http://acm.hdu.edu.cn/showproblem.php?pid=1874

//还是最短路,注意路径可能不止一条

 

#include<cstdio>#include<algorithm>using namespace std;#define N 205#define inf 0x3f3f3f3fint dis[N],w[N][N],n,m,x,y;bool vis[N];void dijstra(){    int i,j;    for(i=0;i<n;i++)    {        dis[i]=w[x][i];        vis[i]=0;    }    dis[x]=0;    vis[x]=1;    for(i=0;i<n;i++)    {       int mark,mindis=inf;       for(j=0;j<n;j++)       {           if(!vis[j]&&dis[j]<mindis)           {               mindis=dis[j];               mark=j;           }       }       //if(mindis==inf) break;       vis[mark]=1;       for(j=0;j<n;j++)       {           if(!vis[j])           {               dis[j]=min(dis[j],dis[mark]+w[mark][j]);           }       }    }    if(dis[y]==inf)        printf("-1\n");    else printf("%d\n",dis[y]);}void init(){    int i,j;    for(i=0;i<n;i++)        for(j=0;j<n;j++)            w[i][j]=inf;}int main(){    while(scanf("%d%d",&n,&m)!=EOF)    {        int i,a,b,c;        init();        for(i=1;i<=m;i++)        {            scanf("%d%d%d",&a,&b,&c);            if(c<w[a][b]) w[a][b]=w[b][a]=c;        }        scanf("%d%d",&x,&y);        dijstra();    }    return 0;}


 

0 0
原创粉丝点击