Tarjan缩点【p1262】间谍网络】的更多相关文章

怕自己太久没写Tarjan了就会把这种神仙算法忘掉. 其实这种类型的图论题的套路还是比较简单且显然的. P2002 消息扩散 很显然的题目,因为在一个环(其实就是强连通分量)中的城市都只需要让其中一个知道就可以让其它的城市都得知信息了. 因此我们把在一个强连通分量中的点都缩点,然后就得到一个DAG 然后我们只需要给入度为0的点传递信息即可 CODE #include<cstdio> #include<cstring> using namespace std; const int N…
P1262 间谍网络 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B.有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报.所以,如果我们能够收买一些间谍的话,我们就可能控制间谍网中的每一分子.因为一旦我们逮捕了一个间谍,他手中掌握的情报都将归我们所有,这样就有可能逮捕新的间谍,掌握新的情报. 我们的反间谍机关提供了一份资料,色括所有已知的受贿的间谍,以及他们愿意收受的具体数额.同时我们还知道哪些…
题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B.有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报.所以,如果我们能够收买一些间谍的话,我们就可能控制间谍网中的每一分子.因为一旦我们逮捕了一个间谍,他手中掌握的情报都将归我们所有,这样就有可能逮捕新的间谍,掌握新的情报. 我们的反间谍机关提供了一份资料,色括所有已知的受贿的间谍,以及他们愿意收受的具体数额.同时我们还知道哪些间谍手中具体掌握了哪些…
题目:https://www.luogu.org/problemnew/show/P1262 首先,一个强连通分量里有一个点被控制则所有点都被控制,所以先 tarjan 缩点,记一下每个连通块中能被收买的人的最小价钱,和整个连通块的点的最小 id: 然后如果有入度为0的点不能被收买,则输出 NO,找最小 id 时注意要找它指向的所有点,又不包括中间可以被收买的: 否则就是 YES,花费就是入度为0的点的最小代价之和. 代码如下: #include<iostream> #include<c…
传送门 思路: ①在 Tarjan 的基础上加一个 belong 记录每个点属于哪个强连通分量. ②存图完成后,暴力地遍历全图,查找是否要间谍不愿受贿. inline void dfs(int u) { if(vis[u]) return ; vis[u]=true,tot++; for(int i=head[u];i;i=t[i].nex) dfs(t[i].to); }//遍历 遍历完后,看看那个间谍没被搜索过(vis数组记录),就把那个不受贿的间谍抓出来. ③如果所有的间谍都愿意受贿,就继…
嘟嘟嘟 建图还是很明显的. 接着分两种情况: 1.图中不存在环:那么只要收买那些入度为0的点.如果这些点有的不能收买.就不能控制所有间谍. 2.图中存在环,那么对于这些在环中的点,我们只要收买数额最少的间谍. 于是我们用tarjan缩点:这样把第二种情况就变成了第一种情况. 所以大体流程是:用tarjan缩点,然后统计新图中入度为0的点愿意收买的数额.缩点的时候可以顺便维护每一个强联通分量的数额的最小值以及编号最小的节点. #include<cstdio> #include<iostre…
4093 EZ的间谍网络 时间限制: 10 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B.有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报.所以,如果我们能够收买一些间谍的话,我们就可能控制间谍网中的每一分子.因为一旦我们逮捕了一个间谍,他手中掌握的情报都将归我们所有,这样就有可能逮捕新的间谍,掌握新的情报. 我们的反间谍机关…
传送门 题目大意:A能揭发B,B能揭发C..某些人可以被收买,如果收买A,那么A,B,C..的情报都可以得到. 求能否得到所有情报,如果可以最少花费多少钱去收买. 题解:tajian缩点 dfs/bfs从能收买的人遍历图,如果全部都能遍历,那么可以得 到所有的情报.然后tarjan缩点,并记录缩的每一个点的收买的 最小值,不能收买的人设收买他的花费是正无穷.统计入度为0 的点的收买花费和. 代码: #include<iostream> #include<cstdio> #inclu…
洛谷P1262:https://www.luogu.org/problemnew/show/P1262 思路 一看题目就知道是强连通分量缩点 当图中有强连通分量时 将其缩点 我们可以用dfn数组判断是否可以达到所有人都可以控制 到最后图中可能有如下2种情况 First 整个图为一个强连通分量 ans即是能贿赂的最小值 Second 当图中有链时 贿赂链的第一个人即可取得最小值 代码 #include<iostream> #include<cstring> using namespa…
题目传送门 真是一道好题呀~~~~qwq 知道这题是tarjan,但是想了很久怎么用上强连通分量.因为样例们...它显然并不是一个强联通分量! (被样例迷惑的最好例子) 然后...就没有然后了...感觉自己被欺骗了.脑补了一些别的做法,向题解低头. $Sol$ 这个时候我们其实需要一些冷静分析.分情况讨论. 判断无解性.什么时候无解?当存在一个间谍既不能被收买也没有被其他间谍掌握自己的资料,则无解.我们在主函数进行tarjan操作时,是从能被收买的间谍开始找环的.那么最后递归结束,当存在间谍没被…