codeforce-601A. The Two Routes(最短路)
2015-11-30 11:33
323 查看
题意:
给你N个点表示N个站,有汽车和火车,汽车只能走公路,火车只能走铁路。
然后给你M条双向路,代表这两个点之间有铁路连接。
然后告诉你如果两个点之间没有铁路,那么就是公路连接。
问你汽车和火车都到达目的地所要的最小时间是多少(两种交通工具不能同时到达同一个城市除了目的地)。
如果有一种交通工具不能到达就输出-1;
思路:
如果两两点之间都是铁路,那么就没有公路,那么汽车不能到达,这时-1;
如果不是这种情况那么要么有铁路连接起点终点,要么有公路,所以两者间必有一个为1,
所以求另一个的最短路就行(肯定不会相撞)。(求两次最短路也行)。
复杂度N2;
给你N个点表示N个站,有汽车和火车,汽车只能走公路,火车只能走铁路。
然后给你M条双向路,代表这两个点之间有铁路连接。
然后告诉你如果两个点之间没有铁路,那么就是公路连接。
问你汽车和火车都到达目的地所要的最小时间是多少(两种交通工具不能同时到达同一个城市除了目的地)。
如果有一种交通工具不能到达就输出-1;
思路:
如果两两点之间都是铁路,那么就没有公路,那么汽车不能到达,这时-1;
如果不是这种情况那么要么有铁路连接起点终点,要么有公路,所以两者间必有一个为1,
所以求另一个的最短路就行(肯定不会相撞)。(求两次最短路也行)。
复杂度N2;
#include<stdio.h> #include<algorithm> #include<iostream> #include<stdlib.h> #include<vector> #include<queue> #include<cstdio> #include<string.h> void dj(int n); const int V=99999999; typedef struct pp { int x; int y; } ss; using namespace std; int flag[500]; int jj[500][500]; int d[500]; int main(void) { int n,i,j,k,p,q,N,M; while(scanf("%d %d",&N,&M)!=EOF) { memset(flag,0,sizeof(flag)); for(i=0; i<450; i++) { for(j=0; j<450; j++) { jj[i][j]=V; } } for(i=0; i<M; i++) { scanf("%d %d",&p,&q); jj[p][q]=1; jj[q][p]=1; } dj(N); int ss=d ; for(i=0; i<450; i++)//求汽车的路径 { for(j=0; j<450; j++) { if(jj[i][j]==V) { jj[i][j]=1; } else jj[i][j]=V; } } dj(N); int vv=d ; int uu=max(vv,ss); if(uu>=V) { printf("-1\n"); } else printf("%d\n",uu); } return 0; } void dj(int n)//最短路N2算法 { fill(d,d+n+1,V); fill(flag,flag+n+1,0); d[1]=0; int i,j,k,p,q; while(true) { int l=-1; for(i=1; i<=n; i++) { if(flag[i]==0&&(l==-1||d[i]<d[l])) { l=i; } } if(l==-1) { break; } flag[l]=1; for(i=1; i<=n; i++) { d[i]=min(d[i],d[l]+jj[l][i]); } } }
相关文章推荐
- 在jsp页面,只让按钮点击一下有用,点击第二下无效,需要刷新一下
- Web和安卓自动化截图功能
- iOS开发免费API接口
- LINUX VIM编译器常用命令总结
- 立即生效的可变时长定时器
- android 项目不能在手机上运行,(解析包出错)(bin文件红叉)
- libCURL开源库在VS2010环境下编译安装,配置详解
- 10001---Python环境搭建(Windows)
- 【noi2007】生成树计数 连通性DP
- js简易检测密码强度
- STM32 GPIO使用超强总结
- 解析JSON的2种方式
- Java线程同步:synchronized锁住的是代码还是对象
- ROS新手教程【三】ROS安装
- List集合转换为数组形式
- js之DOM学习
- Oracle Sourcing Implementation and Administration Guide(转)
- 手机摇一摇功能的总结
- Linux 线程锁详解
- Android Studio开发环境建立aidl文件,生成相应的java文件