![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
强连通分量
青烟绕指柔!
我不怕千万人阻挡,只怕自己投降。
展开
-
Codeforces - Catowice City
题目链接:Codeforces - Catowice City因为同一个人和猫我们不能同时选。所以我们可以看成一个点。我们对于一条边的含义:u -> v 表示如果选 u 就不能选 v。我们可以发现对于一个scc,我们只能选人或者猫。所以如果只有一个scc,则为 No。否则我们拿一个出度为0的scc选人即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#原创 2021-01-21 14:17:13 · 192 阅读 · 0 评论 -
[COI2012] TRAMPOLIN
题目链接:[COI2012] TRAMPOLIN建立一个传送点,然后变成某个点开始的种类最长路。但是存在环,所以我们可以缩点。然后记忆化dfs或者拓扑即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;const int N=3e5+10;int n,k,h[N],dfn[N],原创 2020-08-29 15:15:56 · 202 阅读 · 0 评论 -
「SNOI2017」炸弹
题目链接:「SNOI2017」炸弹因为每个点能到的区间是已知的。所以我们相当于可以是一个点对能到的所有点连边。然后对一个点求出能到的点的最小值和最大值。然后做差就能找到能到的点的个数。所以缩点之后拓扑排序即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long longusing namespace std;const int N=2e原创 2020-08-14 14:46:24 · 168 阅读 · 0 评论 -
Codeforces - Data Center Maintenance
题目链接:Codeforces - Data Center Maintenance如果选一个会造成选另一个,则连一条有向边。我们可以发现同一个scc里面的肯定都要选,然后选没有入度的一定是最优的。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;const int N=1e5+10;原创 2020-07-16 18:05:53 · 175 阅读 · 0 评论 -
魔方俱乐部
题目链接:魔方俱乐部找到每个环,然后缩点。然后从每个入度为0的点开始记忆化dfs。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;const int N=2e5+10;int n,w[N],f[N],dfn[N],low[N],scc[N],vis[N],sum[N],to[N],原创 2020-05-19 18:56:12 · 266 阅读 · 0 评论 -
HXY烧情侣
题目链接:HXY烧情侣显然每个强连通分量取min。然后总和就是所有min之和,方案数就是所有等于min的个数的乘积。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long longusing namespace std;const int N=1e5+10,mod=1e9+7;int n,w[N],dfn[N],low[N],co,cnt,原创 2020-05-14 17:02:26 · 164 阅读 · 0 评论 -
有向图的关键点
题目链接:有向图的关键点显然如果是一个DAG,直接找入度为0 的点。如果多个直接输出0.现在不少DAG,缩点即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;cons...原创 2020-04-24 22:56:52 · 465 阅读 · 0 评论 -
[GZOI2017]小z玩游戏
题目链接:[GZOI2017]小z玩游戏暴力对可达点之间连边,边数的复杂度为 n*n但是其实我们可以用中间点来转接,边数就变为 n * log(n) 了。然后求SCC即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long l...原创 2020-04-06 20:41:25 · 249 阅读 · 0 评论 -
51NOD - 1815调查任务
题目链接:51NOD - 1815调查任务显然答案就是路径上的次大值。因为点可以一直走,所以可以缩成DAG。然后在上面dp。要注意,因为是路径上面的两点,所以不能来自同一路径。比如:1->2,2->4,1->3,3->4, 4不能同时继承2,3的答案。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops...原创 2020-04-01 23:20:18 · 267 阅读 · 0 评论 -
[USACO15JAN]Grass Cownoisseur G
题目链接:[USACO15JAN]Grass Cownoisseur G首先,同一个SCC里面任意可达,里面的点都没区别,故可以缩点。然后,对于有一次反悔的机会,直接建立反悔分层图即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int ...原创 2020-03-23 15:13:41 · 211 阅读 · 0 评论 -
[yLOI2018] 锦鲤抄
题目链接:[yLOI2018] 锦鲤抄其实挺明显的一道题,我们画图可以发现对于一个图,我们不好观察,于是我们先缩成DAG。然后只有入度为0的点不能取。对于一个强连通分量,如果入度不为0,那么可以取完,否则必须剩下一个。然后对能取的取k个最大的即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<...原创 2020-03-04 18:50:23 · 238 阅读 · 0 评论 -
HDU - 6165
题目链接:HDU - 6165显然可以n次bfs,求连通性。但是时间卡得很紧。这里我们可以 O(n+m)的复杂度解决。先缩点变成DAG,然后缩点的图上跑Top,如果某一时刻,一个点可以让两个及以上的点度为0,那么显然就无解。否则有解。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/st...原创 2020-02-25 11:43:55 · 270 阅读 · 0 评论 -
Codeforces - Mr. Kitayuta's Technology
题目链接:Codeforces - Mr. Kitayuta’s Technology我们可以发现如果联通块存在环,若环的大小为n,那么最少必然需要n条边。如果不存在环,我们对于每一个联通块最少必然需要n-1条边。所以我们对每个联通块判环然后分别计数即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include...原创 2020-02-10 15:29:15 · 202 阅读 · 0 评论 -
定向 - Tarjan理解
题目链接:定向题目描述给一张无向图,你需要将边定向,使得定向后的有向图强连通。输入描述:第一行两个数n,m,表示点数和边数。接下来m行,每个两个数x,y,表示x和y之间有条边。输出描述:如果不存在可行方案输出一行"impossible" ;否则,输出一个长度为m的01串,描述你的方案,第i个字符为1表示输入的第i条边定向为从x到y,为0表示从y到x。示例1输入复制3 3...原创 2020-01-28 10:37:18 · 281 阅读 · 0 评论 -
[HAOI2010]软件安装
连接可能成环,所以不能直接跑树形背包。先缩点,建一个新的图,跑一次树形背包即可。注意跑背包时,应该是包括选当前节点的最大价值。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;...原创 2020-01-08 16:57:45 · 214 阅读 · 0 评论 -
Antinomy与伊尔美格
题目链接:Antinomy与伊尔美格比较明显的缩点,但是缩点之后怎么求最大值呢?我们缩点变成DAG之后,因为求最大值,而且不能往回走,所以跑最长路即可。AC代码:#pragma GCC optimize(2)#include<bits/stdc++.h>//#define int long longusing namespace std;const int N=5e...原创 2019-12-08 18:18:02 · 214 阅读 · 0 评论 -
HDU - 3639 Hawk-and-Chicken
Kids in kindergarten enjoy playing a game called Hawk-and-Chicken. But there always exists a big problem: every kid in this game want to play the role of Hawk.So the teacher came up with an idea: Vot...原创 2019-11-23 15:48:26 · 208 阅读 · 0 评论 -
正则表达式
题目背景小Z童鞋一日意外的看到小X写了一个正则表达式的高级程序,这个正则表达式程序仅仅由字符“0”,“1”,“.”和“*”构成,但是他能够匹配出所有在OJ上都AC的程序的核心代码!小Z大为颇感好奇,于是他决定入侵小X的电脑上去获得这个正则表达式的高级程序。题目描述在Internet网络中的每台电脑并不是直接一对一连通的,而是某些电脑之间存在单向的网络连接,也就是说存在A到B的连接不一定存在B...原创 2019-11-11 17:17:30 · 103 阅读 · 0 评论 -
Equivalent Sets
Equivalent SetsTime Limit: 12000/4000 MS (Java/Others) Memory Limit: 104857/104857 K (Java/Others)Total Submission(s): 6755 Accepted Submission(s): 2435Problem DescriptionTo prove two sets A...原创 2019-09-19 16:55:10 · 530 阅读 · 5 评论 -
间谍网络
题目描述由于外国间谍的大量渗入,国家安全正处于高度的危机之中。如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B。有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报。所以,如果我们能够收买一些间谍的话,我们就可能控制间谍网中的每一分子。因为一旦我们逮捕了一个间谍,他手中掌握的情报都将归我们所有,这样就有可能逮捕新的间谍,掌握新的情报。我们的反间谍机关提供了一份...原创 2019-08-17 13:47:22 · 251 阅读 · 0 评论 -
[USACO5.3]校园网Network of Schools
题目描述一些学校连入一个电脑网络。那些学校已订立了协议:每个学校都会给其它的一些学校分发软件(称作“接受学校”)。注意即使 B 在 A 学校的分发列表中, A 也不一定在 B 学校的列表中。你要写一个程序计算,根据协议,为了让网络中所有的学校都用上新软件,必须接受新软件副本的最少学校数目(子任务 A)。更进一步,我们想要确定通过给任意一个学校发送新软件,这个软件就会分发到网络中的所有学校。为了...原创 2019-08-15 13:43:16 · 287 阅读 · 0 评论 -
[HAOI2006]受欢迎的牛
题目描述每头奶牛都梦想成为牛棚里的明星。被所有奶牛喜欢的奶牛就是一头明星奶牛。所有奶牛都是自恋狂,每头奶牛总是喜欢自己的。奶牛之间的“喜欢”是可以传递的——如果A喜欢B,B喜欢C,那么A也喜欢C。牛栏里共有N 头奶牛,给定一些奶牛之间的爱慕关系,请你算出有多少头奶牛可以当明星。输入格式第一行:两个用空格分开的整数:N和M第二行到第M + 1行:每行两个用空格分开的整数:A和B,表示A...原创 2019-08-14 23:32:26 · 84 阅读 · 0 评论 -
信息传递
题目描述有 n 个同学(编号为 1 到 n )正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为 Ti 的同学。游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息, 但是每人只会把信息告诉一个人,即自己的信息传递对象)。当有人从别人口...原创 2019-08-14 10:06:57 · 408 阅读 · 0 评论