[ An Ac a Day ^_^ ] CodeForces 601A The Two Routes 最短路
14号就ccpc全国赛的全国赛了 而且也快东北赛的选拔赛了
现在队伍实力实在不行 参加了也是边缘化的队伍
虽然有新生保护的设置
但实话说 机会还是不大
所以不如趁现在开始好好努力 明年也许还有机会
An Ac a Day ( of course not keep a girl away ^_^ )
题意呢 一个人开火车 一个人开大巴 火车走铁路 大巴走公路
现在有n个城镇 每两个城镇之间都有路
其中m条铁路 其他的都是公路 要求两个人都从1开始走 途中不相遇 问最快要多久
题面比较诡异 两个人 还不允许相遇
不过题中已经说了每两个城镇之间都有路 所以1到n之间一定有一条公路或一条铁路
因此一定至少有一个人在t=1时就到了 这就不用考虑相遇的事了
接下来对另外一个人最短路就好了~
400的数据Floyd暴力都是可以的 不过闲着也是闲的 复习一下Dijkstra
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<math.h>
#include<string.h>
#include<string>
#include<map>
#include<set>
#include<vector>
#include<queue>
#define M(a,b) memset(a,b,sizeof(a))
#define ll long long
using namespace std;
const int inf=0x3f3f3f;
bool vis[];
bool way[][];
int lowcost[];
int n,m;
void Dijkstra(){
for(int i=;i<=n;i++)
lowcost[i]=inf;
lowcost[]=;
for(int i=;i<=n;i++){
int k=-;
int min_=inf;
for(int j=;j<=n;j++){
if(!vis[j]&&lowcost[j]<min_){
min_=lowcost[j];
k=j;
}
if(k==-) continue;
vis[k]=true;
for(int j=;j<=n;j++){
if(!vis[j]&&lowcost[k]+way[k][j]<lowcost[j]&&way[k][j])
lowcost[j]=lowcost[k]+way[k][j];
}
}
}
}
int main(){
scanf("%d%d",&n,&m);
int a,b;
for(int i=;i<m;i++){
scanf("%d%d",&a,&b);
way[a][b]=way[b][a]=true;
}
if(way[][n])
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
if(i!=j) way[i][j]=!way[i][j];
Dijkstra();
if(lowcost[n]>=inf) printf("-1\n");
else printf("%d\n",lowcost[n]);
return ;
}
[ An Ac a Day ^_^ ] CodeForces 601A The Two Routes 最短路的更多相关文章
- 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 ...
- CodeForces - 601A The Two Routes
http://codeforces.com/problemset/problem/601/A 这道题没想过来, 有点脑筋急转弯的感觉了 本质上就是找最短路径 但是卡在不能重复走同一个点 ----> ...
- codeforces 689 Mike and Shortcuts(最短路)
codeforces 689 Mike and Shortcuts(最短路) 原题 任意两点的距离是序号差,那么相邻点之间建边即可,同时加上题目提供的边 跑一遍dijkstra可得1点到每个点的最短路 ...
- Codeforces 601A:The Two Routes 宽搜最短路径
A. The Two Routes time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- codeforces 667D D. World Tour(最短路)
题目链接: D. World Tour time limit per test 5 seconds memory limit per test 512 megabytes input standard ...
- codeforces#1196F. K-th Path(最短路,思维题)
题目链接: https://codeforces.com/contest/1196/problem/F 题意: 在无向图的所有最短路点对中,求出第$k$大 数据范围: $ 1 \leq k \leq ...
- CodeForces 709B Checkpoints (数学,最短路)
题意:给定你的坐标,和 n 个点,问你去访问至少n-1个点的最短路是多少. 析:也是一个很简单的题,肯定是访问n-1个啊,那么就考虑从你的位置出发,向左访问和向右访问总共是n-1个,也就是说你必须从1 ...
- codeforces 689B Mike and Shortcuts 最短路
题目大意:给出n个点,两点间的常规路为双向路,路长为两点之间的差的绝对值,第二行为捷径,捷径为单向路(第i个点到ai点),距离为1.问1到各个点之间的最短距离. 题目思路:SPFA求最短路 #incl ...
- Codeforces 938D. Buy a Ticket (最短路+建图)
<题目链接> 题目大意: 有n座城市,每一个城市都有一个听演唱会的价格,这n座城市由m条无向边连接,每天变都有其对应的边权.现在要求出每个城市的人,看一场演唱会的最小价值(总共花费的价值= ...
随机推荐
- DuiLib 中滚动条不显示的问题
DuiLib 很好用,同时在没有完全理解源码的前提下,坑也不少,比如今天遇到的添加滚动条不显示... 情况是这样的,将一个页面作为Tab控件的其中一页,为了代码不窝在一起,就没有在CreateCont ...
- ConfigurationManager 缓存刷新
服务没有停止的情况下,如果修改了配置,如果不刷新,是不会生效的,需要在每次重新读取配置前刷新配置文件,具体如下: ConfigurationManager.RefreshSection("a ...
- python2 基础
标识符 标识符是由字母,下划线和字母组成的字符序列标识符必须以字母,下划线开头,不能以数字开头标识符不能是关键字标识符可以为任意长度 算术运算符+-*///**% 科学记数法 aEb 或者aE+b例: ...
- Python中fileinput模块使用
fileinput模块可以对一个或多个文件中的内容进行迭代.遍历等操作.该模块的input()函数有点类似文件 readlines()方法,区别在于前者是一个迭代对象,需要用for循环迭代,后者是一次 ...
- 【Python】考虑用生成器改写直接返回列表的函数
使用生成器的好处是显而易见的,可以使代码更加清晰,同时减小内存的消耗,当函数需要返回列表,把函数改写为生成器是相对容易的. 下面这两个函数返回字符串中每个单词的索引: def index_words1 ...
- live555—VS2010/VS2013 下live555编译、使用及测试(转载)
Ⅰ live555简介 Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP.RTSP.SIP等 的支持.Live555实现了对多种音视频 ...
- vim 常用操作
a 进入INSERT MODE x 删除当前光标下的字符dw 删除光标之后的单词剩余部分.d$ 删除光标之后的该行剩余部分.dd 删除当前行. c 功能和d相同,区别在于完成删除操作后进入INSERT ...
- androidstudio下载地址
google官网地址 https://developer.android.com/studio/index.html
- Maven项目下WEB-INFO目录下没有编译的classes文件
建立mavan项目之后,在项目目录中没有发现编译的classes文件夹 解决办法: 因为maven是默认将编译后的classes文件存入项目下的target文件夹中,所以我们需要修改编译后存放的路径, ...
- linux下卸载和安装mysql数据库的方法
1.1 MySQL下载 下载地址:http://www.mysql.com/downloads/mysql/5.5.html#downloads 版本:5.1.68 平台:linux general ...