HDU - 2066 floyd水题
来源:互联网 发布:滨州行知中学官网 编辑:程序博客网 时间:2024/05/01 20:43
hdu - 2066一个人的旅行
题目:
虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^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
输出草儿能去某个喜欢的城市的最短时间。
题意:
就是给你一个图:
然后给你一堆起点,和一堆终点:
然后让你找出所有起点到终点的路径中最短的一个;
没有wa点,就一个是如果用邻接表写的话,没有给出n的范围,需要优化,否则超时,当然你可以重新记下标,就没这么麻烦啦;
思路:
就是一场flody算法:
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
三个for循环,第一个for循环分别表示把k点添加为中介点的情况;
剩下两个for循环枚举路径i->j;
如果dp[i][j]
代码:
#include <iostream>#include <string.h>#include <stdio.h>#include <stdlib.h>#define N 1010#define inf 0x3f3f3f3fusing namespace std;int t,s,d;bool from[N];bool to[N];bool vis[N];int maps[N][N];int n;void floyd(){ int minn=inf; for(int k=1;k<=n;k++) { if(!vis[k]) continue; for(int i=1;i<=n;i++) { if(!vis[i]||maps[i][k]==inf) continue; for(int j=1;j<=n;j++) { maps[i][j]=(maps[i][j]<maps[i][k]+maps[k][j]?maps[i][j]:maps[i][k]+maps[k][j]); if(from[i]&&to[j]&&minn>maps[i][j]) minn=maps[i][j]; } } } printf("%d\n",minn);}int main(){ while(scanf("%d%d%d",&t,&s,&d)!=EOF) { int x,y,z; n=0; memset(from,0,sizeof(from)); memset(to,0,sizeof(to)); memset(maps,inf,sizeof(maps)); memset(vis,0,sizeof(vis)); for(int i=1;i<=t;i++) { scanf("%d%d%d",&x,&y,&z); n=(n>x? n:x); n=(n>y? n:y); vis[x]=vis[y]=true; maps[x][y]=maps[y][x]=(maps[x][y]<z?maps[x][y]:z); } for(int i=1;i<=s;i++) { scanf("%d",&x); from[x]=true; } for(int i=1;i<=d;i++) { scanf("%d",&x); to[x]=true; } floyd(); }}
- HDU - 2066 floyd水题
- HDU 2066 Floyd
- hdu 2066 一个人的旅行(floyd)
- HDU 2066 (最短路 Floyd算法)
- HDU 2066 一个人的旅行 【floyd】
- HDU 2066 一个人的旅行 Floyd
- HDU 2066 一个人的旅行 (floyd)
- hdu 1217 floyd算法
- hdu 1217(Floyd 算法)
- hdu 1217 Arbitrage--Floyd
- 【Floyd算法】hdu 2868
- 【floyd】hdu 3665
- 【floyd】hdu 4034
- hdu 1217 map+floyd
- HDU 4034 图论 Floyd
- HDU-1596 FLOYD
- 【hdu 】 Arbitrage (Floyd)
- hdu 4034 floyd Graph
- JPA是什么?他和Hibernate什么关系?
- 获取文件夹下的文件和文件夹
- Angular $location 获取 url 参数
- RecyclerView实现瀑布流
- PIQ07: Longest Palindromic Subsequence
- HDU - 2066 floyd水题
- 树莓派无法开机,实际是屏幕点不亮!
- jeb2 java 脚本插件
- python json.dumps() json.dump()的区别
- Rx1.5 + retorfit2.1 简单使用
- oracle decode函数使用方法
- wifidog中的wdctl命令
- STM8外部引脚中断EXTI配置后,系统不断进入中断的问题
- CentOS之.NET CORE-安装