• hdoj2066


    Problem : 2066 ( 一个人的旅行 )     Judge Status : Accepted
    RunId : 2839037    Language : G++    Author : huwenbiao
    Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta
    /***************************************************************\
    *Author:Hu Wenbiao
    *Created Time: Wed 18 Aug 2010 05:49:24 PM CST
    *File Name: main.cpp
    *Description:单源最短路径。增加一个总出发点和一个总目的地转化为
    *一般的单源最短路径
    \***************************************************************/

    //*========================*Head File*========================*\\

    #include<iostream>
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    /*----------------------*Global Variable*----------------------*/
    int
    T,S,D,N,a,b,_time,G[
    1010][1010],Dest[1010],dist[1010];
    bool
    visit[
    1010];
    //*=======================*Main Program*=======================*//
    using namespace std;

    int
    main(){

    //freopen("input","r",stdin);
    while(scanf("%d%d%d",&T,&S,&D)!=EOF){
    memset(G,
    100,sizeof(G));//初始化为一个较大值
    N=0;//N标记最大的顶点值
    for(int i=0;i<T;i++){
    scanf(
    "%d%d%d",&a,&b,&_time);
    if
    (a>N)N=a;
    if
    (b>N)N=b;
    if
    (G[a][b]>_time)
    //取最短路径
    G[a][b]=G[b][a]=_time;
    }

    for
    (int i=
    1;i<=S;i++){//将0作为总出发点,它到各个实际出发点的距离为0
    scanf("%d",&a);
    if
    (a>N)N=a;
    G[
    0][a]=G[a][0]=0;
    }

    for
    (int i=
    1;i<=D;i++){//N+1作为总目的地,这时还未确定下来
    scanf("%d",Dest+i);
    if
    (Dest[i]>N)
    N=Dest[i];
    }

    N++;
    for
    (int i=
    1;i<=D;i++)//各目的地到总目的地的距离是0
    G[N][Dest[i]]=G[Dest[i]][N]=0;

    for
    (int i=
    1;i<=N;i++){
    dist[i]=G[
    0][i];
    }

    memset(visit,
    false,sizeof(visit));
    visit[
    0]=1;
    while
    (
    true){
    int
    u,_min=
    1000000000;
    for
    (int i=
    1;i<=N;i++){
    if
    (!visit[i]&&dist[i]<_min){
    u=i;
    _min=dist[i];
    }
    }

    visit[u]=
    true;
    if
    (u==N)break;
    for
    (int i=
    1;i<=N;i++){
    if
    (!visit[i]&&dist[i]>_min+G[u][i])
    dist[i]=_min+G[u][i];
    }
    }

    printf(
    "%d\n",dist[N]);
    }
    }
  • 相关阅读:
    DDPG
    Actor Critic
    Policy Gradients
    DQN
    Sarsa
    粘滞键
    Codeforces Round #236 (Div. 2) E. Strictly Positive Matrix 强连通
    hdu 1853 Cyclic Tour KM
    hdu 3435 A new Graph Game KM
    hdu 3488 Tour KM
  • 原文地址:https://www.cnblogs.com/Open_Source/p/1904887.html
Copyright © 2020-2023  润新知