NEFU 208 flyod

来源:互联网 发布:淘宝联盟登录不上去 编辑:程序博客网 时间:2024/06/15 00:07

 题目链接:http://acm.nefu.edu.cn/JudgeOnline/problemshow.php?problem_id=208

只需要开始标记一个值 然后判断最后的结果是否更新过 若更新过则存在这样的路,否则不存在

#include <iostream>#include <cstdio>#include <cstring>using namespace std;int map[110][110];int main(){    int n,m;    while(~scanf("%d%d",&n,&m))    {        int a,b,x;        for(int i=0;i<n;i++)            for(int j=0;j<n;j++)                map[i][j]=10000000;        for(int i=0;i<m;i++)        {            scanf("%d%d%d",&a,&b,&x);            if(map[a][b]>x)            {                map[a][b]=x;                map[b][a]=x;            }        }        for(int k=0;k<n;k++)            for(int i=0;i<n;i++)                for(int j=0;j<n;j++)                {                    if(map[i][k]==10000000||map[k][j]==10000000)                        continue;                    if(map[i][k]+map[k][j]<map[i][j])                       map[i][j]=map[i][k]+map[k][j];                }        scanf("%d%d",&a,&b);        if(map[a][b]!=10000000)            cout<<map[a][b]<<endl;        else           puts("-1");    }    return 0;}


0 0
原创粉丝点击