zoukankan      html  css  js  c++  java
  • 畅通工程续

    #include<stdio.h>
    int main()
    {
        int n=0,m=0,i=0,j=0,k=0,l=0,x[205][205]={0},a=0,b=0,c=0,s=0,t=0,d[205]={0};
        while(scanf("%d%d",&n,&m)!=EOF)
        {
            for(i=0;i<=n;i++)
            {
                for(j=0;j<=n;j++)
                {
                    x[i][j]=0;
                }
            }
            for(i=0;i<m;i++)
            {
                scanf("%d%d%d",&a,&b,&c);
                if((x[a][b]==0)||(x[a][b]>c))
                {
                    x[a][b]=c;
                    x[b][a]=c;
                }
                if(a==b) x[a][b]=0;
            }
            scanf("%d%d",&s,&t);
            for(i=0;i<=n;i++)
                d[i]=0;
            d[s]=1;
            for(i=0;i<n;i++)
            {
                j=0x3f3f3f3f;//记录未被标记过的到s最短的点的距离,注意一开始要设置成最大。
                l=-1;
                for(k=0;k<n;k++)
                {
                    if((x[s][k]>0)&&(x[s][k]<j)&&(d[k]==0))
                    {
                        j=x[s][k];
                        l=k;
                    }
                }
                if(l>-1)
                {
                    d[l]=1;
                    for(k=0;k<n;k++)
                    {
                        if((x[l][k]>0)&&(x[l][k]+x[s][l]<x[s][k]))
                        {
                            x[s][k]=x[l][k]+x[s][l];
                        }
                        if((x[l][k]>0)&&(x[s][k]==0)&&(k!=s))
                        {
                            x[s][k]=x[l][k]+x[s][l];
                        }
                    }
                }
            }
            if((x[s][t]!=0)&&(s!=t)) printf("%d
    ",x[s][t]);
            else  if(s==t) printf("0
    ");
            else printf("-1
    ");
        }
    
    }
  • 相关阅读:
    day01
    用表单验证数据(1)
    用表单验证数据
    表单
    ORM作业
    mysql完全卸载大全
    mycat特点及用途
    ajax 跨域请求解决方案
    myeclipse使用SVN团队开发
    配置mybatis错误总结
  • 原文地址:https://www.cnblogs.com/NWUACM/p/6735977.html
Copyright © 2011-2022 走看看