tarjan
Eirlys_North
这个作者很懒,什么都没留下…
展开
-
NOIP2015信息传递
Tarjan求最小强连通分量(注意要形成一个环而不是一个点,即size>1).Pascal:var n,x,l,time,top,t,minn:longint; i :longint; dfn,low,z,size :array[0..200010] of longint; ...原创 2016-11-08 07:05:02 · 529 阅读 · 0 评论 -
bzoj 3887 tarjan+拓扑排序
题意:给定一张有向图,从1开始随便走最后回到1,有一次机会可以反向沿着某条边走一次,求最多能经过多少个点,(每个点最多对答案贡献一次)如果不能反向走,那么答案就是1所在的强连通分量的大小当我们反了一条边后,答案就是反边后含1所在强连通分量的环如果我们断开我们所反的边和1,那么会形成两部分——从1所在强连通分量走出和回到1所在强连通分量所以我们先缩点再利用拓扑排序分别求出缩点后的原创 2017-04-17 20:51:50 · 534 阅读 · 0 评论 -
bzoj 1123 tarjan+乘法原理
题意:n个点,m条双向边,问删除每个点后,对于有序数对(x,y)满足x,y互不连通的数对数(即(1,2)与(2,1)算2对)。其中,被删掉的点也应被统计。题意明白以后,一眼看过去就是tarjan因为要求统计被删除的点,所以每个点的基础答案为 (n-1)*2如果删去的点不是割点,则它除了基础答案外不会再增加新的不连通的数对如果删去的点是割点,那么会裂成几个连通块,统计每个连通块的大小原创 2017-03-14 17:25:29 · 610 阅读 · 0 评论 -
bzoj 2208 缩点+dfs
题目:乱搞复杂度O(n^2)..下面是黑字是蒟蒻的吐槽,蓝字是蒟蒻的口胡,仅供娱乐其实一开始是想用记忆化搜索的..然后发现如果出现环的话,会访问到已经访问过的点且这个点的答案并没有完成更新,就会出错,所以就先用tarjan缩点重建图,这样就可以形成一个有向无环图,就避免了刚擦出错的情况然后对于缩点后的图依旧是采用记忆化搜索去找它的连通数,对于一个已经找过联通数的点就不再去找直接累加原创 2017-03-14 14:58:46 · 432 阅读 · 0 评论 -
bzoj 2788 / 洛谷3530 差分约束系统+floyd+tarjan
题意:n个正整数变量xi,有两种限制,第一种为xa+1=xb或xc很显然的差分约束系统,建边转化为最长路无解的情况当然就是出现正权环,可以用floyd判(跑floyd的时候不判断i、j、k互异,最后看map[i,i]如果不等于0就是出现了正权环)注意图的特殊性:第一类限制是双向边,第二类限制是单向边考虑求强连通分量显然强连通分量之间的边一定是第二类的单向边 A只要我们保证强原创 2017-02-25 14:50:06 · 415 阅读 · 0 评论 -
bzoj 1051 缩点重构图
题意:给出m个数对(a,b) 表示a牛认为b牛受欢迎,如果a牛认为b牛受欢迎,b牛认为c牛受欢迎,则a牛也认为c牛受欢迎。找到被所有牛认为是受欢迎的牛的个数(自己不用认为自己受欢迎= =)我们很容易发现“认为受欢迎”是具有传递性的那么,对于a牛认为b牛受欢迎我们就建一条a指向b的有向边然后我们发现,对于每一个强连通分量,他们是互相认为受欢迎的=。=那么我们所点重新构图后就形成了一原创 2017-01-26 21:57:04 · 517 阅读 · 0 评论 -
poj1144 割点模板
tarjan求割点(low[p]>=low[x]) 的模板题,注意对dfs序列根节点情况的单独考虑(必须访问至少两次)var n,ans,l,x,y :longint; time,top,son :longint; last,low,dfn,z :array[0..110] of longint; vis,flag原创 2016-11-15 17:13:41 · 404 阅读 · 0 评论 -
poj3177 tarjan缩点+割边 模板 【pascal】
1、tarjan缩点求割边2、缩点后此时一定形成一棵树,再把割边加回来求缩点后的各个点的度3、至少在树上添加(leaf+1)/2 条边,就能 使树达到边二连通,leaf的度为1var n,m,l,ans,a,b :longint; time,top,p,q :longint; vis :array[0..原创 2016-11-16 07:56:30 · 509 阅读 · 0 评论 -
poj1236 Network of Schools (tarjan缩点+求入度为0的点和出度为0的点的个数)
题目链接:http://poj.org/problem?id=1236 题目大意:N(2各学校之间有单向的网络,每个学校得到一套软件后,可以通过单向网络向周边的学校传输问题1:初始至少需要向多少个学校发放软件,使得网络内所有的学校最终都能得到软件。问题2:至少需要添加几条传输线路(边),使任意向一个学校发放软件后,经过若干次传送,网络内所有的学校最终都能得到软件。强原创 2016-12-13 18:02:39 · 942 阅读 · 0 评论 -
洛谷P2921/BZOJ1589[USACO08DEC]在农场万圣节Trick or Treat on the Farm
题目描述Every year in Wisconsin the cows celebrate the USA autumn holiday of Halloween by dressing up in costumes and collecting candy that Farmer John leaves in the N (1 <= N <= 100,000) stalls...原创 2016-11-01 07:06:13 · 964 阅读 · 0 评论 -
洛谷 P2863 tarjan求强连通分量个数
题意:给定一个n个点,m条边的有向图,求大小大于1的强连通分量个数tarjan模板#include<stdio.h>#include<string.h>#define maxn 10010#define maxm 50010int time = 0, top = 0;int l = 0;int last[maxn], dfn[maxn], low[m...原创 2019-08-11 16:57:19 · 348 阅读 · 0 评论