Equivalent Sets HDU - 3836 (Tarjan)】的更多相关文章

题目说给出一些子集,如果A是B的子集,B是A的子集,那么A和B就是相等的,然后给出n个集合m个关系,m个关系表示u是v的子集,问你最小再添加多少个关系可以让这n个集合都是相等的 如果这n个几个都是互相相等的,那么就等于是这n个集合看成点以后,构成的图是一个强连通图,那么就是说在加多少边让这个图变成强联通图. 先缩点然后做判断 1,如果原本的图本来就是强联通的,那么答案就是0 2.如果原本的图不是强联通的,那就去判断缩完以后的点的入度和出度,取入度为0的和出度为0的点数的最大值,就是最小需要加的边…
题意: 给一些集合 要求证明所有集合是相同的 证明方法是,如果$A∈B$,$B∈A$那么$A=B$成立 每一次证明可以得出一个$X∈Y$ 现在已经证明一些$A∈B$成立 求,最少再证明多少次,就可以完成要求 分析 其实就等价于给一个有向图,问你再加入多少个边可以使得图变为强连通图 给一个图论经典结论: "对于一个有向无环图(DAG),若想让它成为强连通图,至少需要添加$max(a,b)$条边 $a$为入度为0的点的数量,$b$为出度为0的点的数量" 而对于一个有向图,其每个强连通分量都…
#include<map> #include<set> #include<ctime> #include<cmath> #include<stack> #include<queue> #include<string> #include<vector> #include<cstdio> #include<cstdlib> #include<cstring> #include&l…
[BZOJ4331][JSOI2012]越狱老虎桥(Tarjan) 题面 BZOJ 然而BZOJ是权限题QwQ 洛谷 题解 先求出所有割边,那么显然要割掉一条割边. 如果要加入一条边,那么显然是把若干条割边串起来,使得这些割边不能被割掉. 那么把割边求出来之后,按照权值从小到大考虑所有割边,第一个不能和前面的构成一条链的割边就是答案. 那么考虑能否构成一条链. 首先缩点后形成一棵树,然后维护链的开头.链的结尾,以及链上深度最浅的位置,然后大力讨论一波就好了. #include<iostream>…
[BZOJ2208][JSOI2010]连通数(Tarjan) 题面 BZOJ 洛谷 题解 先吐槽辣鸡洛谷数据,我写了个\(O(nm)\)的都过了. #include<iostream> #include<cstdio> using namespace std; #define MAX 2020 struct Line{int v,next;}e[MAX*MAX]; int h[MAX],cnt=1; inline void Add(int u,int v){e[cnt]=(Lin…
A * B Problem Plus HDU - 1402 (FFT) Calculate A * B.  InputEach line will contain two integers A and B. Process to end of file. Note: the length of each integer will not exceed 50000. OutputFor each case, output A * B in one line. Sample Input 1 2 10…
D - 淡黄的长裙 HDU - 4221(贪心) James is almost mad! Currently, he was assigned a lot of works to do, so many that you can't imagine. Each task costs Ai time as least, and the worst news is, he must do this work no later than time Bi! OMG, how could it be c…
强连通分量\(\rm (Tarjan)\)             --作者:BiuBiu_Miku \(1.\)一些术语   · 无向图:指的是一张图里面所有的边都是双向的,好比两个人打电话 \(U\) 可以打给 \(V\) 同时 \(V\) 也可以打给 \(U\)( 如图1 就是一个无向图)   · 有向图:指的是一张图里面所有的边都是单向的,好比一条单向的公路只能从 \(U→V\) 而不能从 \(V→U\) ( 如图2 就是一个有向图)   · 连通:指的是在 \(\rm \color{r…
题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=5055 Bob and math problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 695    Accepted Submission(s): 263 Problem Description Recently, Bob ha…
什么是jarjan? 1)求割点 定义:在无向连通图中,如果去掉一个点/边,剩下的点之间不连通,那么这个点/边就被称为割点/边(或割顶/桥). 意义:由于割点和割边涉及到图的连通性,所以快速地求出割点和割边对于解决有关图连通性的问题有很大的帮助. 首先我们可以知道这个问题的上界为O(n*(n+m))/O(m*(n+m)),通过O(n)/O(m)枚举去掉的点/边,然后BFS在O(n+m)检查剩下的点的连通性就可以得到一个平方级别的算法. 这个算法显然难以进行优化,所以我们考虑从图本身的结构入手.…