hdu 1874 畅通工程续 floyed

来源:互联网 发布:跳转 打开淘宝客户端 编辑:程序博客网 时间:2024/05/16 18:45

裸题

题意:求任意两点之间的最短路径

坑点:测试数据同一条路径有可能出现多次,然后值不一样,注意筛选最小边

#include <iostream>#include <cstdio>#include <algorithm>using namespace std;int mp[300][300];const int inf=20000;void init() {    for(int i=0;i<203;i++) {        for(int j=0;j<203;j++) {            if(i==j) mp[i][j]=0;            else mp[i][j]=inf;        }    }}int main() {    int n,m;    while(scanf("%d%d",&n,&m)!=EOF) {        int a,b,c;        init();        for(int i=1;i<=m;i++) {            scanf("%d%d%d",&a,&b,&c);            mp[a][b]=min(c,mp[a][b]);            mp[b][a]=min(c,mp[a][b]);        }        for(int k=0;k<n;k++) {            for(int i=0;i<n;i++) {                for(int j=0;j<n;j++) {                    if(mp[i][j]>mp[i][k]+mp[k][j]) {                        mp[i][j]=mp[i][k]+mp[k][j];                    }                }            }        }        scanf("%d%d",&a,&b);        if(mp[a][b]!=inf)            printf("%d\n",mp[a][b]);        else printf("-1\n");    }    return 0;   }
原创粉丝点击