Luogu P11280 GFOI Round 2 Jom & Terry 题解 [ 黄 ] [ BFS ]
Jom & Terry:讲个笑话,我赛时被诈骗了。
思路
先放结论:如果 Terry 到终点的距离小于等于 Jom 到终点的距离,那么 Terry 一定不会被抓。
为啥呢,因为不管 Jom 堵哪里,Jom 总要比 Terry 早到达某个最短路径上的点。而因为 Jom 更早到,所以本来就可以直接到终点去堵 Terry,根本不需要在路上去堵他,证毕。
因为终点固定,又是无向图,所以以终点为起点 BFS 一遍即可求出其他点到终点的距离,时间复杂度 \(O(n+q)\)。
代码
#include <bits/stdc++.h>
#define fi first
#define se second
#define lc (p<<1)
#define rc ((p<<1)|1)
#define eb(x) emplace_back(x)
#define pb(x) push_back(x)
#define lc(x) (tr[x].ls)
#define rc(x) (tr[x].rs)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ldb;
using pi=pair<int,int>;
const int N=1000005;
int n,m,r,q,d[N];
vector<int>g[N];
void bfs(int s)
{
queue<int>q;
memset(d,0x3f,sizeof(d));
d[s]=0;
q.push(s);
while(!q.empty())
{
int u=q.front();
q.pop();
for(auto v:g[u])
{
if(d[v]>=0x3f3f3f3f)
{
d[v]=d[u]+1;
q.push(v);
}
}
}
}
int main()
{
//freopen("sample.in","r",stdin);
//freopen("sample.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>m>>r;
for(int i=1;i<=m;i++)
{
int u,v;
cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
bfs(r);
cout<<"I'm here!\n";
cin>>q;
while(q--)
{
int a,b;
cin>>a>>b;
if(d[a]<=d[b])cout<<"Terry\n";
else cout<<"Jom\n";
}
return 0;
}
Luogu P11280 GFOI Round 2 Jom & Terry 题解 [ 黄 ] [ BFS ]的更多相关文章
- Codeforces Round #182 (Div. 1)题解【ABCD】
Codeforces Round #182 (Div. 1)题解 A题:Yaroslav and Sequence1 题意: 给你\(2*n+1\)个元素,你每次可以进行无数种操作,每次操作必须选择其 ...
- 喵哈哈村的魔法考试 Round #2 (Div.2) 题解
喵哈哈村的魔法考试 Round #2 (Div.2) 题解 A.喵哈哈村的战争 题解: 这道题就是for一遍,统计每个村子的战斗力的和,然后统计哪个村子的战斗力和大一点就好了. 唯一的坑点,就是这道题 ...
- 喵哈哈村的魔法考试 Round #1 (Div.2) 题解
喵哈哈村的魔法考试 Round #1 (Div.2) 题解 特别感谢出题人,qscqesze. 也特别感谢测题人Xiper和CS_LYJ1997. 没有他们的付出,就不会有这场比赛. A 喵哈哈村的魔 ...
- luogu P1549 棋盘问题(2) 题解
luogu P1549 棋盘问题(2) 题解 题目描述 在\(N * N\)的棋盘上\((1≤N≤10)\),填入\(1,2,-,N^2\)共\(N^2\)个数,使得任意两个相邻的数之和为素数. 例如 ...
- Codeforces Round #608 (Div. 2) 题解
目录 Codeforces Round #608 (Div. 2) 题解 前言 A. Suits 题意 做法 程序 B. Blocks 题意 做法 程序 C. Shawarma Tent 题意 做法 ...
- Codeforces Round #525 (Div. 2)题解
Codeforces Round #525 (Div. 2)题解 题解 CF1088A [Ehab and another construction problem] 依据题意枚举即可 # inclu ...
- Codeforces Round #528 (Div. 2)题解
Codeforces Round #528 (Div. 2)题解 A. Right-Left Cipher 很明显这道题按题意逆序解码即可 Code: # include <bits/stdc+ ...
- Codeforces Round #466 (Div. 2) 题解940A 940B 940C 940D 940E 940F
Codeforces Round #466 (Div. 2) 题解 A.Points on the line 题目大意: 给你一个数列,定义数列的权值为最大值减去最小值,问最少删除几个数,使得数列的权 ...
- Codeforces Round #677 (Div. 3) 题解
Codeforces Round #677 (Div. 3) 题解 A. Boring Apartments 题目 题解 简单签到题,直接数,小于这个数的\(+10\). 代码 #include &l ...
- Codeforces Round #665 (Div. 2) 题解
Codeforces Round #665 (Div. 2) 题解 写得有点晚了,估计都官方题解看完切掉了,没人看我的了qaq. 目录 Codeforces Round #665 (Div. 2) 题 ...
随机推荐
- vue之slot和slot-scope
插槽分两类,默认插槽和具名插槽:通俗理解就是默认插槽是没有名称的插槽,具名插槽是有名称的插槽. 何时使用插槽?简单的举个栗子:有2个组件,父组件father,子组件son. 父组件 father &l ...
- 分布式配置中心之Apollo
Apollo(阿波罗)是携程开源的一款可靠的分布式配置管理中心,它能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管理场 ...
- 开发工具之DevToys
DevToys 号称开发人员的瑞士军刀,可以帮助完成一些日常任务,比如格式化 JSON.比较文本.测试正则等,无需使用许多不真实的网站来处理的数据. 借助智能检测,DevToys 能够检测出可以处理在 ...
- Graylog之进阶操作
有关系统的索引,权限,pipline 参考文章: https://mp.weixin.qq.com/s/LROHPjZEJPMsS5M_a3pPFw https://blog.csdn.net/wei ...
- 0-JavaScript入门
1.1 JS用途 JavaScript属于一门脚本语言,可用于前端给网页添加一些动态效果. 也可用于node平台,开发服务器 React.Vue框架底层也是通过JS实现 1.2 JS组成 前端分为三层 ...
- 13TB的StarRocks大数据库迁移过程
公司有一套StarRocks的大数据库在大股东的腾讯云环境中,通过腾讯云的对等连接打通,通过dolphinscheduler调度datax离线抽取数据和SQL计算汇总,还有在大股东的特有的Flink集 ...
- Linux C/C++编程中的多线程编程基本概念
8.2.1 操作系统和多线程 要在应用程序中实现多线程,必须有操作系统的支持.Linux 32位或64位操作系统对应用程序提供了多线程的支持,所以Windows NT/2000/XP/7/8/10是 ...
- mindoc 迁移
1.备份数据库 mysqldump --databases mindoc_db > mindoc_db.sqlmysqldump -u USER_NAME -p PASSWORD [其他选项] ...
- 集成Nacos
版本统一:Spring Boot 2.6.11,Spring Cloud 2021.0.4,Spring Cloud Alibaba 2021.0.4.0: Maven 仓库记得配置中央仓库,私服上有 ...
- Visual Studio - API调试与测试工具之HTTP文件
后端开发,我们对于Api接口调试测试大致有以下方法:单元测试.Swagger.Postman. 但是每种方式也都有其局限性,几年前使用Visual Studio Code开发过一段时间,接触了REST ...