tarjan
andyc_03
这个作者很懒,什么都没留下…
展开
-
【tarjan割点】poj2117 Electricity
ElectricityTime Limit: 5000MS Memory Limit: 65536K Total Submissions: 7129 Accepted: 2275 DescriptionBlackouts and Dark Nights (also known as ACM++) is a company that provides electricity. The company owns several power plants, each..原创 2020-11-22 08:42:50 · 221 阅读 · 0 评论 -
【tarjan割桥】HDU 4738 Caocao‘s Bridges
Problem DescriptionCaocao was defeated by Zhuge Liang and Zhou Yu in the battle of Chibi. But he wouldn't give up. Caocao's army still was not good at water battles, so he came up with another idea. He built many islands in the Changjiang river, and base原创 2020-11-21 23:17:18 · 172 阅读 · 0 评论 -
【tarjan+拓扑】P3627 [APIO2009]抢掠计划
这道题目还是先用tarjan缩点,然后用拓扑序进行一下计算和【tarjan+拓扑】P2272 [ZJOI2007]最大半连通子图 一样代码#include<bits/stdc++.h>using namespace std;const int maxm=5e5+5;const int maxn=5e5+5;int n,v,m,f[maxm],tot,flag[maxn],h[maxn],t[maxm],bar[maxn],head[maxn],...原创 2020-11-21 22:20:51 · 133 阅读 · 0 评论 -
【tarjan+拓扑】P2272 [ZJOI2007]最大半连通子图
题目就是要求最长链的长度及其个数首先tarjan缩一下点,然后重新建一下图(注意去重边 我写的离散化)然后在这个DAG图上跑一下拓扑排序递推一下,注意推的过程中记录一下方案数就行了代码#include<bits/stdc++.h>using namespace std;const int maxm=1e6+5;const int maxn=1e5+5;int n,v,m,x,f[maxm],t[maxm],head[maxn];struct edg...原创 2020-11-21 18:58:53 · 180 阅读 · 0 评论 -
【tarjan】P2746 [USACO5.3]校园网Network of Schools
首先就是tarjan缩点,在一个强连通块内的有一个能收到信息就可以将信息传递给所有点然后统计一下入度出度,任务A就是求入度为0的联通块的个数,任务B是入度和出度为0的连通块的个数的最大值注意特判:全部在一个连通块的时候要特判!!代码#include<bits/stdc++.h>using namespace std;const int maxn=10005;int n,cnt,top,in[105],out[105],head[105],st[1...原创 2020-11-21 13:00:45 · 170 阅读 · 0 评论 -
2020复习——连通性问题
1.tarjan模板题 【tarjan】P2863 [USACO06JAN]The Cow Prom S原创 2020-11-21 12:04:10 · 177 阅读 · 0 评论 -
【tarjan】P2863 [USACO06JAN]The Cow Prom S
一道模板题代码#include<bits/stdc++.h>using namespace std;const int maxn=1e4+5;const int maxm=5e4+5;int n,m,cnt,dfn[maxn],top,size[maxn],col_num,s[maxn],low[maxn],times,head[maxn],instack[maxn];struct edge{ int to,nxt;}e[maxm];void add(int...原创 2020-11-21 12:02:58 · 183 阅读 · 0 评论 -
【tarjan】P1407 [国家集训队]稳定婚姻
tarjan夫妻之间:girl→boygirl 旧恋人之间:boy→girlboy然后判断每对夫妻是否在一个强联通分量里即可#include<bits/stdc++.h>using namespace std;const int maxn=10005;const int maxm=2e4+5;int n,m,inin[maxn],head[maxn],dfn[maxn],dfs_times,low[maxn],tot;map <string,int> s;s原创 2020-11-04 22:21:21 · 127 阅读 · 0 评论 -
【tarjan】P5058 [ZJOI2004]嗅探器
题目描述某军搞信息对抗实战演习,红军成功地侵入了蓝军的内部网络。蓝军共有两个信息中心,红军计划在某台中间服务器上安装一个嗅探器,从而能够侦听到两个信息中心互相交换的所有信息。但是蓝军的网络相当的庞大,数据包从一个信息中心传到另一个信息中心可以不止有一条通路。现在需要你尽快地解决这个问题,应该把嗅探器安装在哪个中间服务器上才能保证所有的数据包都能被捕获?输入格式输入文件的第一行一个整数 n,表示蓝军网络中服务器的数目。接下来若干行是对蓝军网络的拓扑结构描述,每行是两个整数 i,j原创 2020-10-25 22:27:39 · 206 阅读 · 0 评论 -
【lca+tarjan(圆方树)】P4320 道路相遇
首先tarjan求点双,在一个点双里的向一个新建的方点连边即可这样就建好了圆方树,然后就树剖lca,代码#include<bits/stdc++.h>using namespace std;const int maxn=5e6+5;int head[maxn],topp[maxn],son[maxn],dep[maxn],sz[maxn],h[maxn],fa[maxn],top,st[maxn],num,n,q,m,cnt,times,cut[maxn],low[ma.原创 2020-09-17 23:00:25 · 153 阅读 · 0 评论 -
【tarjan】P3388 【模板】割点(割顶)
用tarjan算法求点双注意统计点双的个数的时候不要算重了(错了好几次代码#include<bits/stdc++.h>using namespace std;const int maxn=1e5+5;int head[maxn],n,m,cnt,times,cut[maxn],low[maxn],dfn[maxn],tot;struct edge{ int to,nxt;}e[maxn<<1];void add(int x,int y){..原创 2020-09-16 22:48:16 · 74 阅读 · 0 评论 -
【tarjan】P2272 [ZJOI2007]最大半连通子图
首先可以用tarjan进行缩点,因为缩点后的结果对答案不会造成影响然后就可以按照拓扑序进行求解了方案数可以用dp的方式去求注意:要在缩完点之后进行去重的操作,否则方案数会被算大代码...原创 2020-09-11 23:54:27 · 67 阅读 · 0 评论 -
【tarjan】P3627 [APIO2009]抢掠计划
由于路和银行都可以重复走,而银行里的钱只能被抢走一次,所以考虑到tarjan缩点,之后跑spfa的最长路即可代码#include<bits/stdc++.h>using namespace std;int n,m,s,p,top,times;const int maxn=5e5+5;const int inf=0x3f3f3f3f;int S,T,dis[maxn],st[maxn],vis[maxn],h[maxn],tot,x[maxn],y[maxn],col_t.原创 2020-07-26 15:44:48 · 153 阅读 · 0 评论 -
【tarjan】P1262 间谍网络
对能被收买的间谍进行tarjantarjan后求入度为0的新点,答案为这些新点中最小的点权之和如果跑完tarjan后,还有人没被走过,那就意味着无法全部收买,输出NO#include<bits/stdc++.h>using namespace std;const int maxn=3005;const int inf=0x3f3f3f3f;const int maxm=8005;int n,p,m;int money[maxn],ans,head[maxn],dfn[m原创 2020-07-23 11:30:06 · 213 阅读 · 0 评论 -
【tarjan】 P2002 消息扩散
tarjan后求入度为0的点的个数注意有自环,所以在读入时,要判断两个点不同再建边#include<bits/stdc++.h>using namespace std;const int maxn=1e5+5;const int maxm=5e5+5;int cnt,tot,times,ans,top,in[maxn],que[maxn],col[maxn],val[maxn],n,m,ux[maxm],uy[maxm];int head[maxn],dfn[maxn],lo原创 2020-07-23 10:13:12 · 226 阅读 · 0 评论 -
【tarjan】 P2341 [USACO03FALL][HAOI2006]受欢迎的牛 G
如果几头奶牛互相喜欢,那么我们就可把他们视为一个强连通分量,然后缩点。此时出度为0的点为最受明星牛,但如果出度为0的点超过了一个那么就无法做到有奶牛被所有人喜欢代码#include<bits/stdc++.h>using namespace std;const int maxn=1e4+5;const int maxm=5e4+5;int n,m,cnt,ans,ux[maxm],uy[maxm],dfn[maxn],low[maxn],head[maxn];int.原创 2020-07-23 09:20:50 · 223 阅读 · 0 评论 -
【tarjan+dp】P3387 【模板】缩点
可以多次走一个点或一条边,但只计算一次点权,意味着我们需要进行缩点tarjan进行求强联通分量主要记录DFN[i],LOW[i],以及维护que记录走过的点通过后向边和树枝边对LOW值的更新,当DFN[i]=LOW[i]时,就出现了强连通分量,可以进行缩点操作在缩点后,重新建图,然后就可以通过dp(记忆化) 进行统计代码#include<bits/stdc++.h>using namespace std;const int maxn=1e4+5;const in.原创 2020-07-23 08:45:37 · 94 阅读 · 0 评论