
tarjan
z听歌的小孩z
这个作者很懒,什么都没留下…
展开
-
P2863 [USACO06JAN]牛的舞会The Cow Prom(tarjan模板题)
题目链接 题意:给定n个点,m条边,求图中所有点个数大于1的强连通分量个数 题解:用tarjan跑一遍,求出所有强连通分量,并保存每个连通分量点的个数,大于1就ans++。 #include<bits/stdc++.h> using namespace std; const int maxn = 1e5+10; struct edge{ int next,v; }e[maxn...原创 2019-06-05 16:13:21 · 130 阅读 · 0 评论 -
poj2186 Popular Cows(tarjan缩点)
题目链接 题意:有n头牛,m种崇拜关系。比如牛a崇拜牛b,牛B崇拜牛c,那么牛a就崇拜牛c。问有多少头牛被所有牛崇拜。 题解:崇拜关系肯定会形成一个有向有环图,对于在一个强联通分量的所有牛进行缩点成一个点。然后就简单了,剩下的所有点都不强联通,变成了一个有向无环图。我们只要找出度为0的点,就能找到能被所有牛崇拜的牛。如果没找到则答案为0;如果找到一个,因为这个点可能是一个强连通分量缩成的...原创 2019-06-05 17:16:16 · 157 阅读 · 0 评论 -
P3388 【模板】割点(割顶)(tarjan求割点模板)
题目链接 题意:给定一个无向图,求割点的数目。 题解:什么叫割点?简单来说,就是如果删掉一个点,一个图变成了多个图,那么这个点就叫割点。 求割点的方法还是用到了tarjan算法,但是与求强联通分量的tarjan会略有不同。 对于根结点,只要判断其是否有两个及以上的子儿子。 对于非根结点,如果low[v]>=dfn[u],就能判断u是一个割点了。因为你无法将low[v]更新,说明不存...原创 2019-06-05 21:25:59 · 244 阅读 · 0 评论 -
小白月赛12 I华华和月月逛公园(tarjan求桥)
题目链接 题意:给你n个点,m条边,求有多少条边是不一定要经过的。 题解:tarjan求桥模板题,如果这条边是桥,那么是一定要经过的。 判断桥的条件:low[v]>dfn[u],这样说明low[v]没有被更新,也就不存在环了。 #include<bits/stdc++.h> using namespace std; const int maxn = 1e5+100; s...原创 2019-06-06 11:22:35 · 180 阅读 · 0 评论 -
P3387 【模板】缩点 题解(tarjan缩点+拓扑排序+记忆化搜素dp)
题目链接 题意:给一个有向有环图,图上每个点有权值。找出一条路径点权值之和最大,注意每个点的权值只计算一次。 题解 :先将成环的强联通分量缩点,再用拓扑排序的顺序进行记忆化搜素就行了。 #include<bits/stdc++.h> using namespace std; const int maxn = 1e4+100; int n,m; struct edge{ int...原创 2019-06-09 20:53:03 · 192 阅读 · 0 评论 -
P2746 [USACO5.3]校园网Network of Schools(tarjan缩点)
题目链接 思路:在一个环上的学校,软件肯定是共享的。所以先对环先进行缩点。最后得到一张有向无环图。然后统计每个点的入度和出度。 对于子任务A:统计入度为0的点就好了。只要把软件给这个学校,那么整条链上的学校都能用到软件。 对于子任务B:实际上就是在入度为0的点和出度为0的点连一条边,所以就是统计入度为0的点和出度为0的点的最大值。 特别注意的是:当只有一个强连通分量时,子任务B为0; ...原创 2019-06-11 13:46:48 · 130 阅读 · 0 评论