CSAcademy Beta Round #5 Long Journey
题目链接:https://csacademy.com/contest/arhiva/#task/long_journey/
大意是有一张无向不带权的图,两个人同时从s点出发,分别前往a点和b点,且每个人应该走s到a和s到b的最短路,问他们可以一起走的最大距离是多少。
我一开始的想法是以s为源点bfs,做出所有点的前驱,然后判断a回到s和b回到s有多少点是共享的。WA了,后来一想,这么做确实是错的,因为很有可能a回到s的路是一条b不会走的路。然后变了下思路,直接分别以s,a和b为源点bfs,做出三个dis数组,枚举图中所有点,判断是否在s到a以及s到b的最短路上,如果是的话,则更新答案。
![](/assets/blank.gif)
![](/assets/blank.gif)
1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 #include <string> 5 #include <cstring> 6 #include <cstdio> 7 #include <math.h> 8 #include <queue> 9 #include <stack> 10 #include <map> 11 #include <cassert> 12 #include <set> 13 using namespace std; 14 15 16 const int N=323456; 17 18 struct Edge { 19 int to,next; 20 Edge() {} 21 Edge(int _to,int _next):to(_to),next(_next) {} 22 } edge[N<<2]; 23 int idx=1,head[N]; 24 inline void addedge(int u,int v) { 25 edge[++idx]=Edge(v,head[u]); 26 head[u]=idx; 27 } 28 bool vis[N]; 29 30 void bfs(int s,int *dis) { 31 memset(vis,false,sizeof vis); 32 queue<int>que; 33 que.push(s); 34 vis[s]=true; 35 dis[s]=0; 36 while (!que.empty()) { 37 int u=que.front(); 38 que.pop(); 39 for (int k=head[u];k;k=edge[k].next) { 40 int v=edge[k].to; 41 if (vis[v]) continue; 42 dis[v]=dis[u]+1; 43 vis[v]=true; 44 que.push(v); 45 } 46 } 47 } 48 int dis[3][N]; 49 int main () { 50 int n,m; 51 while (scanf("%d %d",&n,&m)==2) { 52 int s,a,b; 53 scanf("%d %d %d",&s,&a,&b); 54 idx=1;memset(head,0,sizeof head); 55 for (int i=1;i<=m;i++) { 56 int u,v; 57 scanf("%d %d",&u,&v); 58 addedge(u,v); 59 addedge(v,u); 60 } 61 bfs(s,dis[0]); 62 bfs(a,dis[1]); 63 bfs(b,dis[2]); 64 int da=dis[0][a]; 65 int db=dis[0][b]; 66 int ret=0; 67 for (int i=1;i<=n;i++) { 68 if (dis[0][i]+dis[1][i]==da&&dis[0][i]+dis[2][i]==db) { 69 ret=max(ret,dis[0][i]); 70 } 71 } 72 cout<<ret<<endl; 73 } 74 return 0; 75 }
View Code
转载于:https://www.cnblogs.com/micrari/p/5478169.html
CSAcademy Beta Round #5 Long Journey相关推荐
- Codeforces Beta Round #17 D. Notepad (数论 + 广义欧拉定理降幂)
Codeforces Beta Round #17 题目链接:点击我打开题目链接 大概题意: 给你 \(b\),\(n\),\(c\). 让你求:\((b)^{n-1}*(b-1)\%c\). \(2 ...
- Codeforces Beta Round #5 B. Center Alignment 模拟题
B. Center Alignment 题目连接: http://www.codeforces.com/contest/5/problem/B Description Almost every tex ...
- Codeforces Beta Round #75 (Div. 1 Only) B. Queue 线段树。单点更新
http://codeforces.com/problemset/problem/91/B 题意: 给你n个数,求得i 到n中小于a[i]的最右边的a[j],然后求a[i]到a[j]之间包含了多少个数 ...
- Codeforces Beta Round #51 D. Beautiful numbers 数位dp + 状态优化
传送门 文章目录 题意: 思路: 题意: 思路: 数位dpdpdp挺经典的一个题辣,有一个很明显的状态就是f[pos][num][lcm]f[pos][num][lcm]f[pos][num][lcm ...
- Codeforces Beta Round #22 (Div. 2 Only) E. Scheme(DFS+强连通)
题目大意 给了 n(2<=n<=105) 个点,从每个点 u 出发连向了一个点 v(共 n 条边) 现在要求添加最少的边使得整个图是一个强连通图 做法分析 这道题千万不要一般化:先求强连通 ...
- codeforces beta round 1
codeforces beta round 1 A Theatre Square in the capital city of Berland has a rectangular shape with ...
- Codeforces Beta Round #4 (Div. 2 Only)
Codeforces Beta Round #4 (Div. 2 Only) A 水题 1 #include<bits/stdc++.h> 2 using namespace std; 3 ...
- Codeforces Beta Round #7
Codeforces Beta Round #7 http://codeforces.com/contest/7 A 水题 1 #include<bits/stdc++.h> 2 usin ...
- Codeforces Beta Round #1 A,B,C
A. Theatre Square time limit per test:1 second memory limit per test:256 megabytes input:standard in ...
- Codeforces Beta Round #2--B题 (DP)
题目:The least round way 1000*1000的方阵,每个格子有一个非负整数,现在要从左上走到右下,每次只能向下或者向右走.目标是使得所有走的格子里的数的乘积里,末尾0的个数最少,要 ...
最新文章
- Android -- TouchDelegate
- python 迭代器
- 遇到洋妞不敢搭讪,程序员的羞涩你不懂
- 【机器学习】这次终于彻底理解了奇异值分解(SVD)原理及应用
- CodeForces 543D 树形DP Road Improvement
- 定期定量采购_企业常见的六种采购策略
- php网站开发项目实战,PHP动态网站开发项目实战
- 吉他谱——寂寞是因为思念谁
- [转载] Python 从字符串匹配相同元素的所有下标位置(两种办法解析)
- ConvMF论文解读
- c语言小程序跑马灯,小程序横向跑马灯效果(3种方式)
- 安全防范趋势、信息安全管理、隐私保护
- 数据链路层概述(主要解决的三个问题)
- 营业执照识别/发票识别在供应链与物流智能移动解决方案
- 安全狗加入天翼网信安全产业联盟 发挥云安全生态影响力
- C语言-初识C语言(4)
- Latex公式内行间距,字体大小控制
- android 深度自定义View
- 基于Matlab的静电场仿真实验--求均匀带电球壳的电场
- mysql_native_password_连接报错'mysql_native_password'
热门文章
- 微信小程序云开发教程-云函数操作数据库-排序查询、指令查询
- vue element 调用后台下载文件
- bootstraptable 数字不换行_不知道这些数据录入技巧,你就凹凸了!|Excel093
- 基于springboot的猫头鹰物业管理系统
- extjs tree下拉列表_Extjs中ComboBoxTree实现的下拉框树效果(自写)_extjs
- docker 中安装 docker jenkins 的安装及配置
- RequestContextHolder 获取 ServletRequest 和 ServletResponse,Spring MVC ModelAndView 数据响应 Response
- 阶段3 2.Spring_07.银行转账案例_7 代理的分析
- 阶段3 1.Mybatis_07.Mybatis的连接池及事务_2 连接池介绍
- 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第3节 线程同步机制_8_解决线程安全问题_Lock锁...