HDU 2066 一个人的旅行(dijkstra水题+判重边)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066
题目大意:输入数据有多组,每组的第一行是三个整数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个数,表示草儿想去地方。
输出草儿能去某个喜欢的城市的最短时间。
解题思路:就是简单的最短路,除了floyd(优化一下也可以),其他最短路算法都能过。 注注注意要判重边,不知道邻接表怎么判,然后就把邻接表的dijkstra改成用邻接矩阵的了。。。
这里有一个小技巧,把草儿家当成0,草儿家相邻城市距离也全都为0,dijkstra一次就可以了。
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<functional>
using namespace std;
const int N=1e3+;
const int INF=<<-; int V,E;
int map[N][N];
bool used[N];
int d[N]; void dij(int a[],int n){
for(int i=;i<=V;i++){
d[i]=INF;
used[i]=false;
}
for(int i=;i<=n;i++){
d[a[i]]=;
} while(true){
int k=-;
for(int i=;i<=V;i++){
if(!used[i]&&(k==-||d[k]>d[i]))
k=i;
}
if(k==-)
break;
used[k]=true;
for(int i=;i<=V;i++){
if(d[i]>d[k]+map[k][i])
d[i]=d[k]+map[k][i];
}
}
} int main(){
int s,q;
while(cin>>E>>s>>q){
V=;
for(int i=;i<N;i++)
for(int j=;j<N;j++)
map[i][j]=(i==j?:INF); for(int i=;i<=E;i++){
int a,b,cost;
cin>>a>>b>>cost;
V=max(V,(a,b));
if(map[a][b]>cost){
map[a][b]=map[b][a]=cost;
}
}
int a[N],b[N];
for(int i=;i<=s;i++){
cin>>a[i];
}
for(int i=;i<=q;i++){
cin>>b[i];
}
dij(a,s);
int ans=INF;
for(int i=;i<=q;i++){
ans=min(ans,d[b[i]]);
}
cout<<ans<<endl;
}
}
HDU 2066 一个人的旅行(dijkstra水题+判重边)的更多相关文章
- hdu 2066 一个人的旅行 Dijkstra
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066 题意分析:以草儿家为原点,给出城市间相互抵达的时间,给出草儿想去的城市,求最短时间.典型的单源最 ...
- HDU 2066 一个人的旅行 (Dijkstra算法)
一个人的旅行 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submis ...
- HDU 5832 A water problem(某水题)
p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...
- HDU——2066一个人的旅行(优先队列SPFA水题)
一个人的旅行 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- hdu 2066 一个人的旅行
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2066 一个人的旅行 Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷 ...
- hdu 2393:Higher Math(计算几何,水题)
Higher Math Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- <hdu - 3999> The order of a Tree 水题 之 二叉搜索的数的先序输出
这里是杭电hdu上的链接:http://acm.hdu.edu.cn/showproblem.php?pid=3999 Problem Description: As we know,the sha ...
- HDOJ/HDU 1256 画8(绞下思维~水题)
Problem Description 谁画8画的好,画的快,今后就发的快,学业发达,事业发达,祝大家发,发,发. Input 输入的第一行为一个整数N,表示后面有N组数据. 每组数据中有一个字符和一 ...
- hdu 1164:Eddy's research I(水题,数学题,筛法)
Eddy's research I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
随机推荐
- WebDriver的定位元素方法
如果把页面上的元素看作人的话,在现实世界如何找到某人呢?方法有三: 一.通过人本身的属性,例如他的姓名,手机号,身份证号,性别,这些可区别他人的属性.在web页面上的元素也有这些属性,例如,id.na ...
- HDU 3480 斜率dp
Division Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 999999/400000 K (Java/Others)Total ...
- php开启压缩gzip
php服务的开启压缩,节省带宽 看是否开启压缩的网站 http://www.cnblogs.com/GaZeon/p/5421906.html 找到php.ini,修改下面的 ,重启php-fpm z ...
- 用shell获取目录/文件夹/文件的时间戳
命令: date +%s -r 目录名/文件名 输出内容形如: 1276225332
- HTML+css零碎小知识
1.设置了float浮动的元素和绝对定位position:absolute的元素会脱离正常的文档流.但是设置absolute的元素不会占据空间,相当于隐形了. 2.相对定位position:rel ...
- UndertowServer+SpringMVC+Thymeleaf模板引擎构建轻量级的web项目
这两周需要写一个页面来请求另一个服务中的接口,服务器采用了超轻量级的undertow,模板引擎采用的是Thymeleaf,在寻找页面资源位置这个地方难住了我.下面分享一下,这方面的代码. Spring ...
- Codechef Dynamic Trees and Queries
Home » Practice(Hard) » Dynamic Trees and Queries Problem Code: ANUDTQSubmit https://www.codechef.co ...
- [Luogu 1197] JSOI2008 星球大战
[Luogu 1197] JSOI2008 星球大战 我算是真的沦为联赛选手了. 并查集裸题. 比较麻烦的是删点. 但是从后往前加点就好操作很多. 所以考虑离线,先存图,然后没被删的点之间,有边就合并 ...
- TCP和UDP相关概念
位于传输层的协议,都是基于IP协议的. TCP是面向连接的.可靠的传输,UDP是无连接的.不可靠的传输.要进行TCp传输时候,需要进行三次握手,建立连接,然后才能发送数据,而且在发送过程中,有数据的确 ...
- js、php本周第一天和本周最后一天
PHP:本周一 echo date('Y-m-d',(time()-((date('w')==0?7:date('w'))-1)*24*3600)); //w为星期几的数字形式,这里0为周日 本周日 ...