tarjan
wanherun
今天会有好事发生吗
展开
-
bzoj3331 [BeiJing2013]压力
题目显然,如果两个点之间要有一个必须到达的点,这个点必须是割点。只要我们求出点双联通分量,然后对图重构,在新得到的树上做就好了。我们在树上就可以差分了,最后求一个子树和就好了。#include<bits/stdc++.h> #define N 500000 using namespace std; int first[N+5],nxt[N+5],to[N+5],siz; int First[N+5原创 2018-01-27 08:17:12 · 527 阅读 · 0 评论 -
[noip2015]信息传递 题解
一句话题意:找一个图中最小环的长度。当时第一个想法就是直接暴力找,然后,就T了。其实,这道题有个重要的性质——每个点都只有一条出边。这样,每个店最多在一个环中,然后一个环中的所有点可以两两互相到达,否则不能。具体的话画一画图就知道了。然后就成了Tarjan找强连通分量的水题了。#include<bits/stdc++.h> #define N 200000 using namespace std;原创 2017-10-22 17:20:31 · 1082 阅读 · 0 评论 -
bzoj1179 [Apio2009]Atm
题目这题,咋一看,没什么思路。我们这样想,一个强连通分量中的点显然可以互相到达,所以就不需要考虑了,先缩点。然后重构图,跑一遍SPFA就好了,注意显然不会有环。#include<bits/stdc++.h> #define N 600000 using namespace std; int n,m,A[N+1],x,y,s,p; int first[N+1],nxt[N+1],to[N+1],siz原创 2017-09-21 22:40:48 · 219 阅读 · 0 评论 -
bzoj1051 [HAOI2006]受欢迎的牛
题目哇,CSDN博客皮肤改版了,还有什么优质博主抢先体验版,手贱点了试用,哇塞,好。。。。。。丑。不过据说全部都要改,这样我的心情就好了许多。再来看这道题,比较经典的tarjan缩点题。 先用tarjan缩点,点内每一个小点都能互相到达。大点之间建有向边,如果只存在一个大点的出度为0,那么它的大小就是答案。存在多个的话,答案为0。#include<bits/stdc++.h> #define N原创 2017-09-17 11:28:44 · 191 阅读 · 0 评论