hdu2066-一个人的旅行
2015-08-26 17:03
351 查看
#include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<algorithm> #include<cstdlib> #include<map> #include<queue> #include <deque> #include <list> #include <ctime> #include <stack> #include <vector> #include<set> #define Maxn 1024 #define MOD typedef long long ll; #define FOR(i,j,n) for(int i=j;i<=n;i++) #define DFR(i,j,k) for(int i=j;i>=k;--i) #define lowbit(a) a&-a #define Max(a,b) a>b?a:b #define Min(a,b) a>b?b:a const int inf = 0x3f3f3f3f; const double pi = acos(-1.0); using namespace std; int map_s[Maxn+10][Maxn+10],maxx; bool start[Maxn+10],endd[Maxn+10]; int floyd() { int minn=inf; FOR(k,1,maxx) FOR(i,1,maxx)if(map_s[i][k]!=inf) {FOR(j,1,maxx) { if(map_s[i][j]>map_s[i][k]+map_s[k][j]) map_s[i][j]=map_s[i][k]+map_s[k][j]; if(start[i]&&endd[j]&&minn>map_s[i][j]) minn=map_s[i][j]; } } return minn; } int main() { int t,s,d,a,b,time,tmp; while(~scanf("%d%d%d",&t,&s,&d)) { maxx=0; FOR(i,1,Maxn) FOR(j,1,Maxn) map_s[i][j]=inf; FOR(i,1,t) {scanf("%d%d%d",&a,&b,&time); maxx=maxx>a?maxx:b; maxx=maxx>b?maxx:b; map_s[a][b]=map_s[b][a]=map_s[a][b]<time?map_s[a][b]:time; } memset(start,false,sizeof(start)); memset(endd,false,sizeof(endd)); FOR(i,1,s) {scanf("%d",&tmp); start[tmp]=true; } FOR(i,1,d) {scanf("%d",&tmp); endd[tmp]=true; } printf("%d\n",floyd()); } return 0; }
相关文章推荐
- cocos2dx编译android游戏中,我踩过的坑_2
- 关于flex绑定java 传回来的自定义List
- android 用java布局一个控件
- FragmentTabHost的使用
- http://blog.csdn.net/opennaive/article/details/7514146
- 直播地址
- cornerHarris函数
- PL/SQL 出现死锁解决办法
- MongoDB数据库安装及测试
- i2c内核驱动分析
- FZU 2150 Fire Game (DFS + BFS)
- 在线测试正则表达式工具 jQuery.Validate验证库
- 获取app和手机信息的一些方法
- U3D学习笔记(1)
- 独挡一面
- 4. jQuery 事件
- HEVC去方块滤波原理以及代码流程
- Badboy自动化测试工具 Incrementing Variables
- HDU 1054 Strategic Game (最小顶点覆盖)
- alter system reset