hdu 1874 畅通工程续

来源:互联网 发布:spss v24 激活码mac 编辑:程序博客网 时间:2024/04/29 18:13

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

这个是一个很简单的  最短路问题    

#include<iostream>#include<cstring>#include<cstdio>using namespace std;int a[202][202];bool v[202];int dis[202];#define INF 999999999int n,m,s,t;void Dijkstra(){    int k;   memset(v,false,sizeof(v));    for(int i=0;i<n;i++)    {         dis[i]=a[s][i];    }    dis[s]=0;  //  v[s]=true;    for(int i=0;i<n;i++)    {        int min=INF;        for(int j=0;j<n;j++)        {            if(!v[j]&&min>dis[j])            {                min=dis[j];                 k=j;            }        }        if(min==INF) break;        v[k]=true;        for(int j=0;j<n;j++)        {            if(!v[j])            {                if(dis[k]+a[k][j]<dis[j])                {                    dis[j]=dis[k]+a[k][j];                }            }        }    }    if(dis[t]!=INF) cout<<dis[t]<<endl;    else    cout<<"-1"<<endl;}int main(){    int i,j,k;    while(cin>>n>>m)    {        for(i=0;i<n;i++)        for(j=0;j<n;j++)        a[i][j]=INF;        while(m--)        {            cin>>i>>j>>k;            if(a[i][j]>k)            a[i][j]=a[j][i]=k;        }        cin>>s>>t;        Dijkstra();    }    return 0;}
测试数据
/*12 141 3 15 1 45 8 38 2 68 4 35 4 13 9 59 10 29 7 76 3 46 4 44 7 510 7 35 6 21 4*/


 

原创粉丝点击