[hdu1874] 畅通工程续

来源:互联网 发布:布隆过滤器 java 编辑:程序博客网 时间:2024/06/11 19:07

题目链接

思路:dijkstra模板题

#include <iostream>#include <cstdio>#include <cstring>using namespace std;#define INF 1000000000int m,n,x,y,z,s,e;int w[1005][1005];int d[1005],vis[1005];void dijkstra(){    for(int i=0;i<n;i++) d[i]=INF;    d[s]=0;    for(int i=0;i<n;i++)    {        int x,m=INF;        for(int j=0;j<n;j++)        {            if(m>d[j]&&!vis[j]){                m=d[j];                x=j;            }        }        vis[x]=1;        for(int j=0;j<=n;j++)        d[j]=min(d[j],d[x]+w[x][j]);    }}int main(){    while(scanf("%d%d",&n,&m)!=EOF)    {        memset(w,63,sizeof(w));        memset(vis,0,sizeof(vis));        for(int i=1;i<=m;i++){            scanf("%d%d%d",&x,&y,&z);            if(z<w[x][y])//处理重边            w[x][y]=w[y][x]=z;        }        cin>>s>>e;        dijkstra();        if(d[e]!=INF)        cout<<d[e]<<endl;        else        cout<<"-1"<<endl;    }    return 0;} 
0 0
原创粉丝点击