[ 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条无向边连接,每天变都有其对应的边权.现在要求出每个城市的人,看一场演唱会的最小价值(总共花费的价值= ...
随机推荐
- Linux学习初步
centOS 6.5关闭防火墙步骤 关闭命令: service iptables stop 永久关闭防火墙:chkconfig iptables off两个命令同时运行,运行完成后 ...
- svn恢复到某一版本
转 经常由于坑爹的需求,功能要切回到之前的某一个版本.有两种方法可以实现: 方法1: 用svn merge 1) 先 svn up,保证更新到最新的版本,如20: 2) 然后用 svn log ,查看 ...
- HTTP请求返回状态详解
当用户试图通过 HTTP 访问一台正在运行 Internet 信息服务 (IIS) 的服务器上的内容时,IIS 返回一个表示该请求的状态的数字代码.状态代码可以指明具体请求是否已成功,还可以揭示请求失 ...
- MySQL语句相关经验总结
1. 字段自减 UPDATE `table_name` SET `total`=IF(`total` < 1, 0, `total`-1) WHERE `id` = 1; 一般在做字段减法的时候 ...
- CodeForces 669D Little Artem and Dance
模拟. 每个奇数走的步长都是一样的,每个偶数走的步长也是一样的. 记$num1$表示奇数走的步数,$num2$表示偶数走的步数.每次操作更新一下$num1$,$num2$.最后输出. #pragma ...
- C#基础--属性
定义一个Book类: namespace ConsoleTest { public class Book { private string _bookIsbn; private string _boo ...
- etcd 集群搭建
现有三台机器 CentOS7 node1 10.2.0.10 node2 10.2.0.11 node3 10.2.0.12 1 源码解压命令行方式 node1 ./etcd --name infr ...
- NGUI中的Tween的委托使用
public TweenPosition tweenIn; public TweenScale tweenOut; EventDelegate In = new EventDelegate(this, ...
- asp.net mvc 上传下载文件的几种方式
view: <!DOCTYPE html> <html> <head> <meta name="viewport" content=&qu ...
- AJAX在Struts2中使用
前台页面: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnc ...