木其网络科技专业程序员代写http://www.xmsydw.com
程序员学历擅长经验网店链接
apenny硕士ASP.NET PHP 电子 通信设计 图像 编程 网络5年进入店铺
zheng_qianqian本科C语言 C++面向对象 Java3年进入店铺
guoguanl本科Java Web项目 JSP Hibernate Struts Mysql4年进入店铺

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;
}


posted @ 2013-06-07 20:39  C语言程序  阅读(315)  评论(0编辑  收藏  举报
木其网络科技专业程序员代写http://www.xmsydw.com
程序员学历擅长经验网店链接
apenny硕士ASP.NET PHP 电子 通信设计 图像 编程 网络5年进入店铺
zheng_qianqian本科C语言 C++面向对象 Java3年进入店铺
guoguanl本科Java Web项目 JSP Hibernate Struts Mysql4年进入店铺