codeforce-601A. The Two Routes(最短路)
题意:
给你N个点表示N个站,有汽车和火车,汽车只能走公路,火车只能走铁路。
然后给你M条双向路,代表这两个点之间有铁路连接。
然后告诉你如果两个点之间没有铁路,那么就是公路连接。
问你汽车和火车都到达目的地所要的最小时间是多少(两种交通工具不能同时到达同一个城市除了目的地)。
如果有一种交通工具不能到达就输出-1;
思路:
如果两两点之间都是铁路,那么就没有公路,那么汽车不能到达,这时-1;
如果不是这种情况那么要么有铁路连接起点终点,要么有公路,所以两者间必有一个为1,
所以求另一个的最短路就行(肯定不会相撞)。(求两次最短路也行)。
复杂度N2;
1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<stdlib.h>
5 #include<vector>
6 #include<queue>
7 #include<cstdio>
8 #include<string.h>
9 void dj(int n);
10 const int V=99999999;
11 typedef struct pp
12 {
13 int x;
14 int y;
15 } ss;
16 using namespace std;
17 int flag[500];
18 int jj[500][500];
19 int d[500];
20 int main(void)
21 {
22 int n,i,j,k,p,q,N,M;
23 while(scanf("%d %d",&N,&M)!=EOF)
24 {
25 memset(flag,0,sizeof(flag));
26 for(i=0; i<450; i++)
27 {
28 for(j=0; j<450; j++)
29 {
30 jj[i][j]=V;
31 }
32 }
33 for(i=0; i<M; i++)
34 {
35 scanf("%d %d",&p,&q);
36 jj[p][q]=1;
37 jj[q][p]=1;
38 }
39 dj(N);
40 int ss=d[N];
41 for(i=0; i<450; i++)//求汽车的路径
42 {
43 for(j=0; j<450; j++)
44 {
45 if(jj[i][j]==V)
46 {
47 jj[i][j]=1;
48 }
49 else jj[i][j]=V;
50 }
51 }
52 dj(N);
53 int vv=d[N];
54 int uu=max(vv,ss);
55 if(uu>=V)
56 {
57 printf("-1\n");
58 }
59 else printf("%d\n",uu);
60
61 }
62 return 0;
63 }
64
65 void dj(int n)//最短路N2算法
66 {
67 fill(d,d+n+1,V);
68 fill(flag,flag+n+1,0);
69 d[1]=0;
70 int i,j,k,p,q;
71 while(true)
72 {
73 int l=-1;
74 for(i=1; i<=n; i++)
75 {
76 if(flag[i]==0&&(l==-1||d[i]<d[l]))
77 {
78 l=i;
79 }
80 }
81 if(l==-1)
82 {
83 break;
84 }
85 flag[l]=1;
86 for(i=1; i<=n; i++)
87 {
88 d[i]=min(d[i],d[l]+jj[l][i]);
89 }
90 }
91
92 }
codeforce-601A. The Two Routes(最短路)的更多相关文章
- [ An Ac a Day ^_^ ] CodeForces 601A The Two Routes 最短路
14号就ccpc全国赛的全国赛了 而且也快东北赛的选拔赛了 现在队伍实力实在不行 参加了也是边缘化的队伍 虽然有新生保护的设置 但实话说 机会还是不大 所以不如趁现在开始好好努力 明年也许还有机会 A ...
- codeforces 601A The Two Routes(最短路 flody)
A. The Two Routes time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- ACM学习历程—CodeForces 601A The Two Routes(最短路)
题目链接:http://codeforces.com/problemset/problem/601/A 题目大意是有铁路和陆路两种路,而且两种方式走的交通工具不能在中途相遇. 此外,有铁路的地方肯定没 ...
- CodeForces - 601A The Two Routes
http://codeforces.com/problemset/problem/601/A 这道题没想过来, 有点脑筋急转弯的感觉了 本质上就是找最短路径 但是卡在不能重复走同一个点 ----> ...
- The Two Routes CodeForces - 601A(水最短路)
一个完全图 1和n肯定有一条路 不是公路就是铁路 另= 另一个跑遍最短路即可 #include <bits/stdc++.h> #define mem(a, b) memset(a, ...
- CodeForces 602C The Two Routes(最短路)
Description In Absurdistan, there are n towns (numbered 1 through n) and m bidirectional railways. T ...
- Codeforces 601A:The Two Routes 宽搜最短路径
A. The Two Routes time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- codeforce Gym 100570B ShortestPath Query (最短路SPFA)
题意:询问单源最短路径,每条边有一个颜色,要求路径上相邻边的颜色不能相同,无重边且边权为正. 题解:因为路径的合法性和边的颜色有关, 所以在做spfa的时候,把边丢到队列中去,松弛的时候注意判断一下颜 ...
- [USACO14OPEN] Dueling GPS's[最短路建模]
题目描述 Farmer John has recently purchased a new car online, but in his haste he accidentally clicked t ...
随机推荐
- 基于 Helm 快速部署 Wordpress
Helm 是 Kubernetes 中的一个开源软件包管理工具,Rainbond 从 5.3.1 版本开始支持部署 Helm 应用.实现 Helm 应用的便捷部署,访问控制.使 Rainbond 用户 ...
- 动态滑动登陆框-Html+Css+Js
动态滑动登陆框 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <t ...
- java Random()用法
1.random.nextInt() random.nextIn()的作用是随机生成一个int类型,因为int 的取值范围是 -2147483648--2147483647 ,所以生成的数也是处于这个 ...
- Scala(七)【异常处理】
目录 一.try-catch-finally 二.Try(表达式).getOrElse(异常出现返回的默认值) 三. 直接抛出异常 一.try-catch-finally 使用场景:在获取外部链接的时 ...
- Shell学习(一)——Shell简介
参考博客: [1]Shell简介
- Kotlin 学习(1)
本文出自链接:https://www.jianshu.com/p/ef9584a8ebf8 Kotlin的插件安装: Settings->Plugins->Browse Repositor ...
- Dubbo多协议支持
除了Dubbo服务暴露协议Dubbo协议外,Dubbo框架还支持另外8种服务暴露协议:RMI协议.Hessian协议.HTTP协议.WebService协议.Thrift协议.Memcached协议. ...
- 了解LINQ
本文主要的是泛谈LINQ是啥?以及常见的用法大纲如下: LINQ的那些根基 LINQ的一些基本用法 LINQ的根基 IEnumerable和IEnumerator 为啥能够被foreach? 实际上, ...
- C#中继承和多态
1.继承的概念 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用已存在的类的功能. 为了提高软件模块的可复用性和可扩充性,以便提高软件的开发效率,我们总 ...
- jenkins集成openldap
参考图片 集成ldap参考链接:https://www.cnblogs.com/mascot1/p/10498513.html