Tarjan-SCC-NOIP2015message】的更多相关文章

代码如下 #include <bits/stdc++.h> using namespace std; const int maxv=1e4+10; const int maxe=1e5+10; inline int read(){ int x=0,f=1;char ch; do{ch=getchar();if(ch=='-')f=-1;}while(!isdigit(ch)); do{x=x*10+ch-'0';ch=getchar();}while(isdigit(ch)); return…
思路:建一个有向图,指向能引爆对象,把强连通分量缩成一点,只要点燃图中入度为0的点即可.因为入度为0没人能引爆,不为0可以由别人引爆. 思路很简单,但是早上写的一直错,改了半天了,推倒重来才过了... #include<cstdio> #include<set> #include<stack> #include<cstring> #include<algorithm> #define ll long long using namespace st…
1797: [Ahoi2009]Mincut 最小割 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1685  Solved: 724[Submit][Status][Discuss] Description A,B两个国家正在交战,其中A国的物资运输网中有N个中转站,M条单向道路.设其中第i (1≤i≤M)条道路连接了vi,ui两个中转站,那么中转站vi可以通过该道路到达ui中转站,如果切断这条道路,需要代价ci.现在B国想找出一个路径切断方案…
Description 定义一个半联通图为 : 对任意的两个点$u, v$,都有存在一条路径从$u$到$v$, 或从$v$到$u$. 给出一个有向图, 要求出节点最多的半联通子图,  并求出方案数. Solution 先进行一次$Tarjan \ SCC$ 缩点, 得到一个有向无环图, 则半联通子图一定是一条单向的链. 然后就相当于求出最大的链的节点数, 以及有多少种链有这么多节点. 从每个入度为$0$ 的节点开始$DP$即可. 还需要注意同一对联通块的边需要判重. Code #include<…
一.强连通分量定义 有向图强连通分量在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.有向图的极大强连通子图,称为强连通分量(strongly connected components)SCC. 以上是摘自百科的一段对有向图强连通图分量的形式化定义.其实不难理解,举个例子 如上图,{a,b,c,d}为一个强连通分量,…
Prelude 好,HAOI2017终于会做一道题了! 传送到洛谷:→_→ 传送到LOJ:←_← 本篇博客链接:(●'◡'●) Solution 首先要读懂题. 考场上我是这样想的QAQ. 我们把每个城市看作一个点,在"当前没有贸易关系"的城市之间连边. 此时,如果一个城市集合是一个城市群,那么这个城市集合中的任意两个城市之间都没有边. 因为"可以划分为两个城市群",所以这个图是个二分图. 那么"最大城市群"就是二分图的最大独立集. "…
需要复习的算法额: exgcd CRT INV dij spfa(~) 矩阵快速幂~高斯消元 tarjan(scc,bcc) treap splay 线段树 dp(决策单调,斜率,四边形不等式) rho 10.24-10.28 rho 高斯消元 矩阵 tarjan(scc,bcc) treap splay 线段树 10.29-11.4 exgcd CRT INV dij spfa(~)dp(决策单调,斜率,四边形不等式)…
一个暑假两次集训,感觉学了好多好多的东西,也挖了好多好多的坑,于是就决定写一篇关于算法的总结,用于熟悉新算法,也留下一点对新算法的理解. AC自动机 简单的说就是在\(trie\)树上实现\(KMP\),用于多模式串的匹配. 而\(AC\)自动机的理解就在于\(fail\)指针,\(fail\)指针是实现多模式串匹配的关键.每次匹配失败后,\(fail\)指针会指向一个当前匹配串的最长真后缀,数次跳跃后,就能实现对文本串的一段在\(trie\)树进行所有可能的匹配. 而对于\(fail\)指针的…
SAT 是适定性(Satisfiability)问题的简称.一般形式为 k - 适定性问题,简称 k-SAT.而当 \(k>2\) 时该问题为 NP 完全的.所以我们只研究 \(k=2\) 的情况. 定义 2-SAT,简单的说就是给出 \(n\) 个集合,每个集合有两个元素,已知若干个 \(<a,b>\) ,表示 \(a\) 与 \(b\) 矛盾(其中 \(a\) 与 \(b\) 属于不同的集合).然后从每个集合选择一个元素,判断能否一共选 \(n\) 个两两不矛盾的元素.显然可能有多种…
目录(按字典序) A --A* D --DFS找环 J --基环树 S --数位动规 --树形动规 T --Tarjan(e-DCC) --Tarjan(LCA) --Tarjan(SCC) --Tarjan(v-DCC) A* 用处 当你在做搜索题时,发现各种剪枝的效果都不怎么好,那也就意味着你在搜索时将遇到一棵庞大的搜索树.根据广度优先搜索的性质,当第一次搜索到答案时就必定是最优解,所以在求解最优解一类的问题时我们唯一的策略就是让程序快点搜到答案,也就是尽可能往靠近答案的地方搜索.这里就要用…