
Tarjan算法
Sirius_Ren
▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇自己刮~~~
展开
-
POJ 3114 Tarjan+Dijkstra
题意: 间谍在战争期间想要传递一份谍报回国,谍报可以在邮局之间传递,但这种传递是单向的,并且会少耗一些时间。但是如果两个邮局在同一个国家的话,那么谍报在这两个邮局之间传递是不消耗时间的。如果几个邮局发出的谍报可以通过一些路径相互到达,那么这些邮局就属于一个国家。那么问题来了:给出一个起点和终点,问最快什么时候能够将谍报传递到。 思路: 先Tarjan缩点,然后跑Dijkstra(Floyd可能原创 2016-04-17 21:08:38 · 422 阅读 · 0 评论 -
POJ 1904 思路题
思路: 思路题 题目诡异地给了一组可行匹配 肯定有用啊….就把那组可行的解 女向男连一条有向边 如果男喜欢女 男向女连一条有向边 跑一边Tarjan就行了 (这个时候 环里的都能选 “增广环”嘛)嗯 就搞定了//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namesp原创 2016-10-29 10:50:57 · 414 阅读 · 0 评论 -
BZOJ 2730 矿场搭建 Tarjan求割点
思路: Tarjan求出来点双&割点 判一判就行了//By SiriusRen#include <stack>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define int long long#define N 66666#define mem(x,y) memset(原创 2016-11-05 07:37:27 · 744 阅读 · 0 评论 -
POJ 1523 Tarjan求割点
思路: Tarjan if(dfn[x]<=low[v[i]]){ if(x!=1)sub[x]++; else S++; }//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>#define N 1005using nam原创 2016-09-01 20:11:41 · 632 阅读 · 0 评论 -
POJ 2375
思路: Tarjan缩点+一些特判//By SiriusRen#include <stack>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;stack<int>stk;int n,m,map[666][666],xx[]={1,-1,0,0}原创 2016-08-27 11:13:02 · 657 阅读 · 0 评论 -
BZOJ 2427 /HAOI 2010 软件安装 tarjan缩点+树形DP
终于是道中文题了。。。。 当时考试的时候就考的这道题。。。。 果断GG。 思路: 因为有可能存在依赖环,所以呢 先要tarjan一遍 来缩点。 随后就进行一遍树形DP就好了。。 x表示当前的节点。j表示j的空间最多能放多少价值的软件。 状态转移方程:f[x][j]=max(f[x][j],f[x.son][k]+f[x][j-k]) 题目说:软件i只有在安装了软件j(包括软件j的直接原创 2016-07-31 17:11:27 · 560 阅读 · 0 评论 -
POJ 3180 Tarjan
题意:找强连通中点数大于2的强连通分量个数 思路:Tarjan// By SiriusRen #include <cstdio>#include <algorithm>using namespace std;int n,m,ans=0,t=0,cnt=0,tot=1,top=0,dfn[50050],low[50050],p[10050],s[10050];int xx,yy,jy,fi原创 2016-07-30 15:50:28 · 550 阅读 · 0 评论 -
POJ 2186 Tarjan
题意:有n(n<=10000)头牛,每头牛都想成为最受欢迎的牛,给出m(m<=50000)个关系,如(1,2)代表1欢迎2,关系可以传递,但是不是相互的,那么就是说1欢迎2不代表2欢迎1,但是如果2欢迎3那么1也欢迎3. 输入第一行为n,m第2到1+m行为m个欢迎关系,求被所有牛都欢迎的牛的数量。 思路:Tarjan求强联通分量做。 1.如果图不联通,直接输出零。(不解释) 2.如果有超过1原创 2016-04-17 17:16:31 · 377 阅读 · 0 评论 -
POJ 1330 Tarjan LCA、ST表(其实可以数组模拟)
题意:给你一棵树,求两个点的最近公共祖先。 思路:因为只有一组询问,直接数组模拟好了。 (写得比较乱) 原题请戳这里#include <cstdio>#include <bitset>#include <cstring>#include <algorithm>using namespace std;int first[10005],v[10005],next[10005];int原创 2016-04-10 23:28:56 · 937 阅读 · 0 评论 -
POJ 1523 Tarjan求割点
SPFDescriptionConsider the two networks shown below. Assuming that data moves around these networks only between directly connected nodes on a peer-to-peer basis, a failure of a single node, 3, in the原创 2016-04-21 17:49:32 · 775 阅读 · 0 评论 -
POJ 1470 Tarjan算法
裸的LCA,读入小坑。Tarjan算法大坑,一开始不知道哪儿错了,后来才发现,是vis数组忘了清零了(⊙﹏⊙)b 傻傻的用了邻接矩阵。。。很慢啊,1100多ms。#include <cstdio>#include <cstring>#include <algorithm>using namespace std;char jy;bool vis[999];int q,m,jyy,firs原创 2016-04-10 12:38:34 · 749 阅读 · 0 评论 -
POJ 1236 Tarjan算法
这道题认真想了想。。 【 题目大意:有N个学校,从每个学校都能从一个单向网络到另外一个学校,两个问题 1:初始至少需要向多少个学校发放软件,使得网络内所有的学校最终都能得到软件。 2:至少需要添加几条边,使任意向一个学校发放软件后,经过若干次传送,网络内所有的学校最终都能得到软件。 解题思路: 首先找连通分量,然后看连通分量的入度为0点的总数,出度为0点的总数,那么问要向多少学校发放软件原创 2016-04-12 23:44:55 · 523 阅读 · 0 评论 -
POJ 2553 Tarjan
题意:如果v点能到的所有点反过来又能到v点,则v点是sink点,排序后输出所有的sink点。 思路:Tarjan缩点,输出所有出度为0的连通块内的点。 PS:一定要记得把数组清零!!!!!!!否则自己怎么死的都不知道。 原题请戳这里#include<queue>#include<stack>#include<vector>#include<cstdio>#include<cstring原创 2016-04-17 19:02:18 · 667 阅读 · 0 评论 -
BZOJ 1797 网络流的可行边&必须边
求完网络流以后 tarjan一发 判一判//By SiriusRen#include <queue>#include <bitset>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 122222int n,m,s,t;struct Node{int x,y,w,原创 2016-12-28 15:23:02 · 579 阅读 · 0 评论