国际惯例:题目链接 题目大意:给定有向图,问有多少个点可以被除自己以外所有点到达。 部分分:按照题意模拟,我每个点跑一次$Dfs$,暴力统计,看看多少个点可以被所有点达到。 感觉也没啥好说的了...$Tarjan$缩点,然后发现如果存在这么一坨点,他们必然是出度为$0$的,否则的话,这个点如果能回来 ...
分类:
其他好文 时间:
2020-12-28 12:00:34
阅读次数:
0
#include<iostream> #include<cstring> using namespace std; const int maxn=50010; int head[maxn],cnt; int dfn[maxn],low[maxn],tot,stack[maxn],idx,visit[ ...
分类:
其他好文 时间:
2020-11-13 12:49:27
阅读次数:
7
题目 原题链接 解说 刷$Tarjan$题的时候看到的题目,第一次见到把分层图和$Tarjan$结合的题目,觉得这样的思路很有趣,写博客以记之。 总思路:建双层图->Tarjan缩点->最长路 首先看到题目中“只能走一次的逆向边”这样的条件,我们会很自然地想到建一个分层图。每一个点$i$在第二层有一 ...
分类:
其他好文 时间:
2020-07-28 17:19:27
阅读次数:
69
题目描述 分析 一开始看到这道题,首先想到的就是建好边后跑一个Tarjan缩点,将siz大于1的节点统计一下,输出结果 Tarjan非常显然易得,关键就是怎么建边 比较好想的一种思路就是枚举每一个兴奋程度 对于每一个兴奋程度,再将有趣程度枚举一遍 如果有趣程度是兴奋程度的倍数的话,在两个节点之间建一 ...
分类:
其他好文 时间:
2020-06-27 20:07:04
阅读次数:
52
本题数据量比较大,可以用tarjan缩点后判环,我使用的是差分约束,如果存在环的情况,最好将队列换成栈。 但是在普通求spfa的时候,还是要用队列。 #include<bits/stdc++.h> using namespace std; const int N=3e5+10; int h[N],n ...
对于有向图问题,如果能转化成dag那么就会好做很多,因为这题如果是dag,那么只要只存在一格出度为0的,就是答案 而强连通分量中的点都可以互达,所以进行tarjan缩点。 tarjan缩点的原理,分为四个边,树边,前向边,后向边,横叉边 dfn是时间戳,tarjan的栈中存的是祖先和已被遍历的并且能 ...
码农题.思维难度中等,难在调试 建边方法:分别将x和y排序,对每个点,对它旁边所有的x/y连边(如果他需要). 开map记录点的位置,对于每个点,如果他的九宫格之内有其他点,就对他连边 注意排序会使点的顺序混乱,故需要在状态里将点的id保存 连完边跑tarjan缩点.易证如果你能到一个环内的某个点, ...
分类:
其他好文 时间:
2020-03-21 10:09:50
阅读次数:
86
目录 1.POJ1236 Network of Schools(Tarjan缩点) 2.UVA315 Network(Tarjan求割点) POJ1236 Network of Schools(Tarjan缩点) 题意: 给一张有向图,问你至少要选多少点,从这些点出发可以遍历整个图,最少要加多少条边 ...
分类:
其他好文 时间:
2020-03-06 20:02:00
阅读次数:
64
B.Harborfan的新年拜访Ⅱ 就是一道tarjan缩点的裸题。 建图比较麻烦 以后遇到这种建图,先用循环把样例实现出来,再对着循环写建图公式 #include<bits/stdc++.h> using namespace std; const int maxn=1014; vector<int ...
分类:
其他好文 时间:
2020-02-19 19:08:54
阅读次数:
80
双连通图:无向图中每两个顶点都存在完全不同的两条路径 给定一个无向图,问要给它增加多少条边可以把它变成双连通图。 用tarjan缩点,可以得到一棵树,添加(叶子结点+1)/2条边可以使其成环,也就是答案~ 为了避开重边,这题用邻接矩阵存,wa了一晚上QAQ~ #include<cstdio> #in ...
分类:
其他好文 时间:
2020-02-15 20:37:22
阅读次数:
66