nefu-1297 表哥的旅行(最短路问题)

题目链接:

http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=1197

注意事项:

1.初始数组长度为零

2.同样路径可能花费不同的时间

3.运用变形的Dijkstra算法

代码思路:

先初始化二维数组ecot再输入数据并更新二维数组e和最大的cot,接着输入能到达的点fly并把e[fly][0]e[0][fly]初始化为0,最后输入想要到达的f,然后运用Dijkstra算法得出到达各点的最短路数组,最后找出最短路数组的最小值ans。

代码如下:

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstdio>
 4 #include <cstring>
 5 #define inf  1<<30
 6 using namespace std;
 7
 8 int e[1205][1205];
 9 int a,b,t,n,m,l,cot,ans,fly[1205],f[1205],book[1205],dis[1205];
10 int dsj()
11 {
12     int u,pos;
13     memset(book,0,sizeof(book));
14     book[0]=1;
15     for(int i=0;i<=cot;i++)
16     dis[i]=e[i][0];
17     for(int i=1;i<=cot;i++)
18     {
19         pos=inf;
20         for(int j=1;j<=cot;j++)
21         {
22             if(dis[j]<pos&&book[j]==0)
23             {
24                 pos=dis[j];u=j;
25             }
26         }
27         book[u]=1;
28         for(int v=1;v<=cot;v++)
29         {
30             if(!book[v]&&dis[v]>dis[u]+e[u][v])
31             dis[v]=dis[u]+e[u][v];
32         }
33     }
34     return 0;
35 }
36 int main()
37 {
38     while(~scanf("%d%d%d",&n,&m,&l))
39     {
40         cot=0;
41         for(int i=0;i<1111;i++)
42         {
43             for(int j=0;j<1111;j++)
44             e[i][j]=inf;
45             e[i][i]=0;
46         }
47         for(int i=0;i<n;i++)
48         {
49             scanf("%d%d%d",&a,&b,&t);
50             if(t<e[a][b])
51             e[a][b]=e[b][a]=t;
52             if(cot<a||cot<b)
53             cot=a>b?a:b;
54         }
55         for(int i=0;i<m;i++)
56         {
57             scanf("%d",&fly[i]);
58             e[fly[i]][0]=e[0][fly[i]]=0;
59         }
60         for(int i=0;i<l;i++)
61         scanf("%d",&f[i]);
62         dsj();
63         ans=inf;
64         for(int i=0;i<l;i++)
65         if(ans>dis[f[i]])
66         ans=dis[f[i]];
67         if(ans==inf)
68         printf("NO\n");
69         else
70         printf("%d\n",ans);
71     }
72     return 0;
73 }

时间: 2024-08-25 15:13:50

nefu-1297 表哥的旅行(最短路问题)的相关文章

NEFU 1142 表哥的面包

表哥的面包 Problem:1142 Time Limit:1000ms Memory Limit:65535K Description 可爱的表哥遇到了一个问题,有一个长为N(1≤N≤10^18)的长条状面包,问最多可以切成几段,使得每段面包的长度互不相等且均不能围成三角形. Input 第一行一个T(1≤T≤10),表示T组数据 接着T行,每行一个整数N(1≤N≤10^18)表示面包的长度 Output 输出可以分成的段数 Sample Input 1 6 Sample Output 3 H

hdu 2066 一个人的旅行 Dijkstra

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066 题意分析:以草儿家为原点,给出城市间相互抵达的时间,给出草儿想去的城市,求最短时间.典型的单源最短路问题,直接用Dijkstra即可,无需优化也可.需要注意的地方是:直接和草儿家相连的城市,时间可以算为0. 另外,题目强调可以有多条路径,所以要注意选取其中最短的一条. /*一个人的旅行 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 3

一个人的旅行(杭电oj2066)(Dijkstra算法)

一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 20267    Accepted Submission(s): 7081 Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰

floyd算法--一个人的旅行

2017-07-27 22:37:32 writer:pprp 题目如下: 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历, 还可以看美丽的风景--草儿想去很多地方,她想要去东京铁塔看夜景,去威尼斯看电影,去阳明山上看海芋,去纽约纯粹看雪景,去巴黎喝咖啡写信, 去北京探望孟姜女--眼看寒假就快到了,这么一大段时间,可不能浪费啊,一定要给自己好好的放个假,可是也不能荒废了训

[BZOJ2388]旅行规划

试题描述 OIVillage是一个风景秀美的乡村,为了更好的利用当地的旅游资源,吸引游客,推动经济发展,xkszltl决定修建了一条铁路将当地n个最著名的经典连接起来,让游客可以通过火车从铁路起点(1号景点)出发,依次游览每个景区.为了更好的评价这条铁路,xkszltl为每一个景区都哦赋予了一个美观度,而一条旅行路径的价值就是它所经过的景区的美观度之和.不过,随着天气与季节的变化,某些景点的美观度也会发生变化. xkszltl希望为每位旅客提供最佳的旅行指导,但是由于游客的时间有限,不一定能游览

HDU2066 一个人的旅行【Dijkstra】

一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 20569    Accepted Submission(s): 7191 Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰

HEOI 2012 旅行问题

2746: [HEOI2012]旅行问题 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 1009  Solved: 318[Submit][Status][Discuss] Description yz是Z国的领导人,他规定每个地区的名字只能为26个小写拉丁字母的一个.由于地 区数有可能超过26个,便产生了一个问题,如何辨别名字相同的地区?于是yz规定,一个 地区的描述必须包含它的所有上级,且上级按次序排列.于是,一个地区的描述是一个字符 串.比

1267 老鼠的旅行

1267 老鼠的旅行 2012年CCC加拿大高中生信息学奥赛 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description You are a mouse that lives in a cage in a large laboratory. 你是一只生活在笼子里的实验室老鼠. The laboratory is composed of one rectangular grid of square cages, with a total

萌新的旅行-

Description zstu的萌新们准备去自助旅行,他们租了一辆吉普车,然后选择了n个城市作为游览地点.然后他们惊喜的发现他们选择的城市刚好绕城一个环. 也就是说如果给所有城市按照0,1,2,--,n-1编号,0号城市和n-1号城市是相邻的,并且只能从i号城市去(i+1)%n号城市. 已知每个城市可以充油gas(i),从 i 到 (i+1)%n 城市耗油 cost(i). 假设这辆吉普车没有的油箱一开始是空的,并且没有上限. 没有油的话自然就不能继续旅行了,这个问题让萌新们非常困扰.作为优秀