洛谷P2002消息扩散】的更多相关文章

因为有大佬写的比我更长更具体,所以我也就写写总结一下了 引入: 众所周知,很多图中有个东西名叫环. 对于这个东西很多算法都很头疼.(suchas 迪杰斯特拉) 更深层:环属于强联通分量(strongly connected components): 定义:如果有向图G的每两个顶点都强连通,称G是一个强连通图.有向图的极大强连通子图,称为强连通分量. 例如:(画画技艺高超到自闭) 红圈内部即为强联通分量. 对于这个东西,其他算法更难搞: 那么我们为了把这个东西合为一个,或者找出属于一个强联通分量的…
P2002 消息扩散 题目背景 本场比赛第一题,给个简单的吧,这 100 分先拿着. 题目描述 有n个城市,中间有单向道路连接,消息会沿着道路扩散,现在给出n个城市及其之间的道路,问至少需要在几个城市发布消息才能让这所有n个城市都得到消息. 输入输出格式 输入格式: 第一行两个整数n,m表示n个城市,m条单向道路. 以下m行,每行两个整数b,e表示有一条从b到e的道路,道路可以重复或存在自环. 输出格式: 一行一个整数,表示至少要在几个城市中发布消息. 输入输出样例 输入样例#1: 5 4 1…
题目背景 本场比赛第一题,给个简单的吧,这 100 分先拿着. 题目描述 有n个城市,中间有单向道路连接,消息会沿着道路扩散,现在给出n个城市及其之间的道路,问至少需要在几个城市发布消息才能让这所有n个城市都得到消息. 输入输出格式 输入格式: 第一行两个整数n,m表示n个城市,m条单向道路. 以下m行,每行两个整数b,e表示有一条从b到e的道路,道路可以重复或存在自环. 输出格式: 一行一个整数,表示至少要在几个城市中发布消息. 输入输出样例 输入样例#1: 5 4 1 2 2 1 2 3 5…
题目背景 本场比赛第一题,给个简单的吧,这 100 分先拿着. 题目描述 有n个城市,中间有单向道路连接,消息会沿着道路扩散,现在给出n个城市及其之间的道路,问至少需要在几个城市发布消息才能让这所有n个城市都得到消息. 输入输出格式 输入格式: 第一行两个整数n,m表示n个城市,m条单向道路. 以下m行,每行两个整数b,e表示有一条从b到e的道路,道路可以重复或存在自环. 输出格式: 一行一个整数,表示至少要在几个城市中发布消息. 输入输出样例 输入样例#1: 5 4 1 2 2 1 2 3 5…
传送门啦 这个题就是tarjan强连通分量与入度的例题了. 思路: 利用缩点的思想,先预处理一下所有的强连通分量,然后把每个强连通分量内的所有节点看做一个节点,然后处理一张新图,然后检查每个点的入度,然后取入度为 0 的点(缩点后)的个数,即为信息出发点. 可能有人想问为什么?? 大体说明一下: 1.充分性证明:如果入度为 0 的点不是信息出发点,那么这个点必定不会接收到任何节点发出的信息,因为它的入度为 0 . 2.必要性证明:如果信息出发点不是入度为0的点,那么其必有入度点,使其覆盖点更多,…
怕自己太久没写Tarjan了就会把这种神仙算法忘掉. 其实这种类型的图论题的套路还是比较简单且显然的. P2002 消息扩散 很显然的题目,因为在一个环(其实就是强连通分量)中的城市都只需要让其中一个知道就可以让其它的城市都得知信息了. 因此我们把在一个强连通分量中的点都缩点,然后就得到一个DAG 然后我们只需要给入度为0的点传递信息即可 CODE #include<cstdio> #include<cstring> using namespace std; const int N…
题面 题解 \(Tarjan\)裸题. \(Tarjan\)缩点后统计入度为\(0\)的强连通分量个数,输出即可. 代码 #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> #include <cmath> #include <cctype> #define gI gi #defin…
描述:https://www.luogu.com.cn/problem/P2002 有n个城市,中间有单向道路连接,消息会沿着道路扩散,现在给出n个城市及其之间的道路,问至少需要在几个城市发布消息才能让这所有n个城市都得到消息. tarjan缩点 缩点以后图就变成了几张无环图 那么对于这样的图,入度为0的点就是答案 因为入度不为0的点会一直把消息传达下去 #include <iostream> #include <algorithm> #include <cstring>…
题目描述 有n个城市,中间有单向道路连接,消息会沿着道路扩散,现在给出n个城市及其之间的道路,问至少需要在几个城市发布消息才能让这所有n个城市都得到消息. 输入格式 第一行两个整数n,m表示n个城市,m条单向道路. 以下m行,每行两个整数b,e表示有一条从b到e的道路,道路可以重复或存在自环. 输出格式 一行一个整数,表示至少要在几个城市中发布消息. 输入输出样例 输入 #1复制 输出 #1复制 说明/提示 [数据范围] 对于20%的数据,n≤200; 对于40%的数据,n≤2,000; 对于1…
题目链接:https://www.luogu.org/problemnew/show/P2002 缩点把原图变为DAG,再在DAG上判断找入度为0的点的个数. 注意一点出度为0的点的个数不等于入度为0的点. #include <stack> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; const…