hdu 1874 畅通工程续(dijkstr朴素)

来源:互联网 发布:丹朱围棋软件 编辑:程序博客网 时间:2024/06/03 13:46

题目链接: hdu 1874 畅通工程续

若不存在a到b的道路,则a到b的距离为无穷,最后判断一下即可

#include<iostream>#include<cstdio>#include<cstring>#define maxn 222using namespace std;const int inf = 1<<29;int vis[maxn],dis[maxn],mapp[maxn][maxn],n,m;void Dijkstra(int a){    fill(dis,dis+maxn,inf);    fill(vis,vis+maxn,0);    dis[a]=0;    while(true)    {        int v = -1;        for(int i=1;i<=n;i++)            if(!vis[i]&&(v==-1||dis[v]>dis[i])) v=i;        if(v==-1) break;        vis[v]=1;        for(int i=1;i<=n;i++) dis[i]=min(dis[i],dis[v]+mapp[v][i]);    }}int main(){    while(cin>>n>>m)    {        int a,b,x;        fill(&mapp[0][0],&mapp[maxn][0],inf);        while(m--)        {            cin>>a>>b>>x;            a++,b++;            mapp[a][b]=mapp[b][a]=min(mapp[a][b],x);        }        cin>>a>>b;        a++,b++;        Dijkstra(a);        if(dis[b]==inf) cout<<-1<<endl;        else cout<<dis[b]<<endl;    }    return 0;}



0 0
原创粉丝点击