AcWing 4244. 牛的比赛(双向建图BFS)
题目连接
https://www.acwing.com/problem/content/4247/
http://poj.org/problem?id=3660
思路
通过观察样例我们可以发现一个事情,如果说当前的一个点顺着当前建的边走下去加上逆着走下去能覆盖所有的点,那么这个点的一个排名就确定了,为什么呢?我们来思考一下这个操作的含义:
- 顺着当前建立的边走那么就是找到排名比自己小的人数有多少
- 逆着当前建立的边走那么就是找到排名比自己大的人数有多少
如果排名比自己大和比自己小的人数全部覆盖了,那么自己当前的排名也就能够知晓了,所以我们正向和反向建边,然后对于每一个点跑一个BFS就好啦,因为边权反正都是1
代码
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;const int N = 1e2+10;int n,m;
vector<int> E[2][N];
bool vis[N];void bfs(int s,int loc){queue<int> que;que.push(s);while(!que.empty()){int t = que.front();que.pop();if(vis[t]) continue;vis[t] = true;for(int i = 0,l = E[loc][t].size();i < l; ++i){int j = E[loc][t][i];if(!vis[j]) que.push(j);}}
}bool check(){for(int i = 1;i <= n; ++i) if(!vis[i]) return false;return true;
}int main()
{cin>>n>>m;int u,v;for(int i = 1;i <= m; ++i){cin>>u>>v;E[0][u].push_back(v);E[1][v].push_back(u);}int ans = 0;for(int i = 1;i <= n; ++i) {memset(vis,false,sizeof vis);bfs(i,0);vis[i] = false;bfs(i,1);if(check()) ans++;}cout<<ans<<endl;return 0;
}
AcWing 4244. 牛的比赛(双向建图BFS)相关推荐
- CF-1209 F. Koala and Notebook(建图BFS)
CF-1209 F. Koala and Notebook(建图BFS) 题目链接 题意 n个城市m个双向边,从点1可以到达任何点,把点1到到其他点所经过的边写成一行可以得到一个大数,你的任务使得这个 ...
- 算法提高课-图论-单源最短路的建图方式-AcWing 903. 昂贵的聘礼:建图巧妙、dijkstra、考虑等级
题目分析 来源:acwing 由于终点是1号节点,建立虚拟节点S,如下建图(根据样例画图).S出发和每个点直连的边权代表直接买该物品花的金币数:而由S到1的任意一条通路,边权之和就是花费的金币数.所以 ...
- AcWing 4246. 最短路径和(反向建图+链式前向星+堆优化)
题目连接 https://www.acwing.com/problem/content/description/4249/ http://poj.org/problem?id=1511 思路 其实这道 ...
- acwing单源最短路的建图模式总结
.根据边权的范围以及问题求解的需要,最短路问题可以分为以下 4 种情形,分别用不同的算法求解. • 单源最短路径(固定一个顶点为原点,求源点到其他每个顶点 的最短路径) • 1. 边权非负:Dijks ...
- 算法提高课-图论-单源最短路的建图方式-AcWing 920. 最优乘车:bfs求最短路、建图
题目分析 来源:acwing 分析: 本题难在抽象建图上,这里采用的建图方式是:同一条公交线路上,前面的站点都可以连一条有向边到其后面的站点,且边权都为1. 由于边权都是1,可以用bfs来求最短路. ...
- 【牛客 - 369F】小D的剑阵(最小割建图,二元关系建图,网络流最小割)
题干: 链接:https://ac.nowcoder.com/acm/contest/369/F 来源:牛客网 题目描述 现在你有 n 把灵剑,其中选择第i把灵剑会得到的 wiw_iwi 攻击力. ...
- 【牛客 - 157E】青蛙(floyd最短路,建图)
题干: 链接:https://ac.nowcoder.com/acm/contest/157/E 来源:牛客网 题目描述 有一只可爱的老青蛙,在路的另一端发现了一个黑的东西,想过去一探究竟.于是便开始 ...
- 牛客挑战赛51 E NIT的gcd(欧拉反演,建图优化,三元环计数)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Problem 给你一个正整数 nnn. 请你输出 ∑i=1n∑j=1n∑k=1ngcd(i,j)g ...
- 【牛客 - 331D】炫酷路途(二进制枚举 或 建图方式+最短路 或 dfs)
题干: 小希现在要从寝室赶到机房,路途可以按距离分为N段,第i个和i+1个是直接相连的,只需要一秒钟就可以相互到达. 炫酷的是,从第i个到第i+2pi+2p个也是直接相连的(其中p为任意非负整数),只 ...
最新文章
- PHP 安全email
- 转换 Byte 数组到 ... - 回复 高群 的问题
- pythonlist基本操作_Python list 常用操作
- excel执行INSERT和UPDATE操作语句
- 计算方位角_全站仪各方面应用的原理、操作及计算,看这篇就对了!
- 剑指offer 栈的压入、弹出序列
- 如何保持安全在线的五大技巧
- 你好,了解一下Java 14带来的一系列新功能
- 用python写个电子钟_[TPYBoard - Micropython之会python就能做硬件 3] 制作电子时钟
- c语言高精度算法阶乘_学了这么久的C语言,原来可以这样解决算法问题...
- 宋红康 jvm 课程ppt(String部分)
- 群晖邮箱服务器需要什么证书,群晖NAS邮件通知及两步验证登录详解
- vue开发企业微信应用-开发及调试方式
- 乾坤符和鸿蒙符,『玩家攻略』主力兵符的不二选择!轮回符、不灭符分析
- matlab 根据长轴,短轴,中心坐标画椭圆
- Linux无法终止进程,如何在Linux中终止进程
- 实时时钟DS1302实验
- 四路监控物联卡赋能卡友行车安全
- 吴恩达深度学习课件和课后习题
- android 全局缓存,【Android进阶】RecyclerView之缓存(二)