Description

  虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还可以看美丽的风景……草儿想去很多地方,她想要去东京铁塔看夜景,去威尼斯看电影,去阳明山上看海芋,去纽约纯粹看雪景,去巴黎喝咖啡写信,去北京探望孟姜女……眼看寒假就快到了,这么一大段时间,可不能浪费啊,一定要给自己好好的放个假,可是也不能荒废了训练啊,所以草儿决定在要在最短的时间去一个自己想去的地方!因为草儿的家在一个小镇上,没有火车经过,所以她只能去邻近的城市坐火车(好可怜啊~)。
 

Input

  输入数据有多组,每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个,草儿想去的地方有D个; 
接着有T行,每行有三个整数a,b,time,表示a,b城市之间的车程是time小时;(1=<(a,b)<=1000;a,b 之间可能有多条路
接着的第T+1行有S个数,表示和草儿家相连的城市; 
接着的第T+2行有D个数,表示草儿想去地方。
 

Output

  输出草儿能去某个喜欢的城市的最短时间。
 

Sample Input

6 2 3
1 3 5
1 4 7
2 8 12
3 8 4
4 9 12
9 10 2
1 2
8 9 10
 

Sample Output

9  
  一定要注意题中的细节(陷阱),a,b之间可能有多条路(输入时需处理),将草儿家记为 0, 一遍 dijkstra(),在判断草儿家到想去的地方所需时最短的那个就好,再就没什么了

  #include <iostream>
  #include <cstdio>
  #include <cstring>
  using namespace std;
  const int MAXINT=1<<25;
  int num0[1050][1050];
  int num1[1050];
  int dis[1050];//distance
  bool flag0[1050];
  int T,S,D,flag,MIN,m;
  void dijkstra()
  {
  memset(flag0,0,sizeof(flag0));//重置标记数组
  for(int i=0 ; i<=m ; i++)
    dis[i]=num0[0][i];//各点到草儿家所需最小时间
    flag0[0]=1;
    dis[0]=0;
  for(int i=0 ; i<m ; i++)
  {
    MIN=MAXINT;
    for(int j=1 ; j<=m ; j++)
    {
      if(dis[j]<MIN && !flag0[j])
      {
        MIN=dis[j];
        flag=j;
      }
    }
      if(MIN==MAXINT)
        break;
      flag0[flag]=1;
      for(int j=1 ; j<=m ; j++)
        if(!flag0[j])//attention
          dis[j]=min(dis[j],dis[flag]+num0[flag][j]);//各点到草儿家所需最短时间
  }
}
int main()
{
  int i,j,a,b,time,Min;
  while(~scanf("%d%d%d",&T,&S,&D))
  {
    m=-1;
    for(i=0 ; i<1050 ; i++)
      for(j=0 ; j<=i ; j++)
        if(i != j)
          num0[i][j]=num0[j][i]=MAXINT;
        else
          num0[i][j]=0;//点与点之间所需时间初始化
    for(i=0 ; i<T ; i++)
    {
      scanf("%d%d%d",&a,&b,&time);
        if(time<num0[a][b])//因为a,b间不止一条路,选取时间最短的那条
          num0[a][b]=num0[b][a]=time;
          m=max(max(m,a),b);
    }
    for(i=0 ; i<S ; i++)
    {

      int s;
      scanf("%d",&s);
      num0[0][s]=num0[s][0]=0;
    }
    for(i=0 ; i<D ; i++)
      scanf("%d",&num1[i]);
    dijkstra();
    Min=MAXINT;
    for(i=0 ; i<D ; i++)
      Min=min(Min,dis[num1[i]]);//想要到的地方中所需最小时间
    printf("%d\n",Min);
  }
return 0;
}

 
 
 

ACM学习之路___HDU 2066 一个人的旅行的更多相关文章

  1. ACM学习之路___HDU 5723(kruskal + dfs)

    Abandoned country Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s) ...

  2. ACM学习之路___HDU 1385(带路径保存的 Floyd)

    Description These are N cities in Spring country. Between each pair of cities there may be one trans ...

  3. ACM学习之路————一个大整数与一个小整数不得不说得的秘密

    这个相对于两个大整数的运算来说,只能说是,low爆了. 只要利用好除法的性质,这类题便迎刃而解.O(∩_∩)O哈哈~ //大整数除一个int数 #include<iostream> #in ...

  4. ACM学习之路__HDU 1045

    Fire Net Description : Suppose that we have a square city with straight streets. A map of a city is ...

  5. ACM学习之路

     2018-10-18 11:03:00 今天开始踏上实现梦想的道路,希望自己不要懈怠. 坚持做简单的事,坚持下来就会变得不简单.

  6. <2014 05 09> Lucida:我的算法学习之路

    [转载] 我的算法学习之路 关于 严格来说,本文题目应该是我的数据结构和算法学习之路,但这个写法实在太绕口——况且CS中的算法往往暗指数据结构和算法(例如算法导论指的实际上是数据结构和算法导论),所以 ...

  7. jQuery学习之路(1)-选择器

    ▓▓▓▓▓▓ 大致介绍 终于开始了我的jQuery学习之路!感觉不能再拖了,要边学习原生JavaScript边学习jQuery jQuery是什么? jQuery是一个快速.简洁的JavaScript ...

  8. Android开发学习之路-RecyclerView滑动删除和拖动排序

    Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...

  9. RPC远程过程调用学习之路(一):用最原始代码还原PRC框架

    RPC: Remote Procedure Call 远程过程调用,即业务的具体实现不是在自己系统中,需要从其他系统中进行调用实现,所以在系统间进行数据交互时经常使用. rpc的实现方式有很多,可以通 ...

随机推荐

  1. 关于 Go 中 Map 类型和 Slice 类型的传递

    关于 Go 中 Map 类型和 Slice 类型的传递 Map 类型 先看例子 m1: func main() { m := make(map[int]int) mdMap(m) fmt.Printl ...

  2. JDK源码阅读——ArrayList

    序 如同C语言中字符数组向String过渡一样,作为面向对象语言,自然而然的出现了由Object[]数据形成的集合.本文从JDK源码出发简单探讨一下ArrayList的几个重要方法. Fields / ...

  3. [js高手之路]node js系列课程-图解express+supervisor+ejs用法

    上文通过node js自带的http模块搭建了一个简易的服务器,实际在开发中,一般用的是express框架,本文我们就来讲讲项目开发中必备不可少的几样东西: 服务器( express ) 路由( ex ...

  4. 后台管理UI模板

    一.EasyUI easyui是一种基于jQuery的用户界面插件集合. easyui为创建现代化,互动,JavaScript应用程序,提供必要的功能. 使用easyui你不需要写很多代码,你只需要通 ...

  5. 谈一谈EasyUI中TreeGrid的过滤功能

    写在最前面 这个星期一直在纠结easyui的treegrid的过滤功能,原因呢,自然是项目中一个莫名奇妙的需求. easyui虽说是后端程序员的前端框架,但是说句实话,除去api,让我直接写里面的节点 ...

  6. Android基础知识大全(精品)

    [1].ProgressBar   <ProgressBar android:id="@+id/progress_bar" android:layout_width=&quo ...

  7. 日志log4j配置详情,日志log具体到你想不到

    一.Log4j简介Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局). 1.LoggersLoggers组件在此系统中被分为五个级别:DEBU ...

  8. Kafka Streams 剖析

    1.概述 Kafka Streams 是一个用来处理流式数据的库,属于Java类库,它并不是一个流处理框架,和Storm,Spark Streaming这类流处理框架是明显不一样的.那这样一个库是做什 ...

  9. JTemplates + $.Ajax

    上篇基础使用后: +AJAX 只需要改列名即可 :<script type="text/template" id="foreach">   里的循环 ...

  10. 自制VTP实验总结

    (packet tracer模拟器) 6.1)实验拓扑 //绿色:通:橙色:不通 //sw0是根桥:全通 Pc0:ip 192.168.1.1 Pc1: ip 192.168.1.2 Pc2:ip 1 ...