• hdu 2066 一个人的旅行(Dijkstra求最短路问题)


    这题是我在没学Dijkstra算法时做的,所以跟模板有点不一样,但是意思差不多。如果要看标准的Dijkstra算法的话,可以去查有关知识。

    代码如下:

    // Time 0ms, Memory 5884K
    #include<stdio.h>
    #include<string.h>
    int map[1200][1200],v1[1200],v2[1200],l,d1[1200],d;
    int f(int x)
    {
        int i,min,n=0,y,z,m=-1,v[1200];
        memset(d1,-1,sizeof(d1));
        memset(v,-1,sizeof(v));
        y=x;d1[x]=0;
        while(1)
        {
            min=-1;
            for(i=0;i<=l;i++) if(v1[i] && v[i])
            {
                if(map[y][i]!=-1 && (d1[i]==-1 || d1[i]>(d1[y]+map[y][i]))) d1[i]=d1[y]+map[y][i];
                if(min==-1 || (d1[i]!=-1 && min>d1[i]))
                {
                    min=d1[i];z=i;
                }
            }
            if(min==-1) return m;
            v[z]=0;y=z;
            if(v2[z]) 
            {
                n++;
                if(m==-1 || m>d1[z]) m=d1[z];
            }
            if(n==d) return m;
        }
    }
    int main()
    {
        int t,s,a,b,i,p[1200],q[1200],min,m1,w;
        while(scanf("%d%d%d",&t,&s,&d)==3)
        {
            memset(map,-1,sizeof(map));
            memset(v1,0,sizeof(v1));
            memset(v2,0,sizeof(v2));
            l=-1;min=-1;
            while(t--)
            {
                scanf("%d%d%d",&a,&b,&w);
                if(map[b][a]==-1 || map[a][b]>w) map[b][a]=map[a][b]=w;
                if(l==-1 || l<a) l=a;
                if(l<b) l=b;
                v1[a]=1;v1[b]=1;
            }
            for(i=0;i<s;i++) 
            {
                scanf("%d",&p[i]);v1[p[i]]=0;
            }
            for(i=0;i<d;i++) 
            {
                scanf("%d",&q[i]);v2[q[i]]=1;
            }
            for(i=0;i<s;i++)
            {
                if(v2[p[i]])
                {
                    min=0;break;
                }
                m1=f(p[i]);
                if(min==-1 || (m1!=-1 && min>m1)) min=m1;
            }
            printf("%d\n",min);
        }
        return 0;
    }


  • 相关阅读:
    1.3、python内置类型(0529)
    1.2、Python快速入门(0529)
    1.1、Python快速入门(0529)
    mini Linux制作过程(25/01)
    samba基本应用24-4及示例
    Apache+Php+Mariadb+NFS+discuz
    U盘中病毒了怎么办
    bind9安装配置
    负载均衡的实现(1)
    MySQL之优化
  • 原文地址:https://www.cnblogs.com/java20130726/p/3218218.html
Copyright © 2020-2023  润新知