
tarjan
verdin黄大锤
afo啦!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
P2656 采蘑菇 (卡精度)
P2656 采蘑菇 一个强连通分量里的所有蘑菇都可以被采完。 先缩点,得到一个DAG,拓扑排序,然后DP。 要注意拓扑排序的起点不是题目给的起点。 WA四个点的原因是精度不够,可以把恢复系x10用int存储,计算时再除以10。 #include<bits/stdc++.h> using namespace std; #define read(x) scanf("%d",&x) #define maxn ((int)8e4) #define inf 2147483647 stru原创 2021-10-22 23:21:38 · 228 阅读 · 0 评论 -
tarjan求割点模板
题目:【模板】割点(割顶) 注意: 1、第一个点要特判。 2、一开始作死写了个判重边,把重边去掉了,WA了很久……后来才发现去了重边后悔少一些双联通分量 代码: #include<bits/stdc++.h> using namespace std; #define maxn 100000 int n,m; vector<int> a[maxn+...原创 2018-03-24 20:03:11 · 390 阅读 · 0 评论 -
【模板·tarjan求强连通分量】洛谷 P3387 【模板】缩点
题目:缩点 思路: 首先先跑一边tarjan缩个点。 后面的最长路部分,第一次写时用了个dijkstra,这次用的记忆化搜索。 tarjan时要注意判断找到的pre不为0的点是不是祖先,只有当这个点没被染色时才算找到反向边。 代码: #include&lt;bits/stdc++.h&gt; using namespace std; #define maxn 10000 #define read...原创 2018-10-27 21:34:18 · 278 阅读 · 0 评论 -
洛谷3387 模板 缩点
题目:缩点 思路:tarjan缩点+最长路。 注意: 1、用dijkstra求最长路时,优先队列中的<运算符要反过来。 2、需要把所有入度为0的点为起点跑一遍最长路。 3、每次求最长路时,dist数组不要重新初始化。 4、缩点后的点权为缩点前的所有点权之和。 5、最开始初始化dist[s]的值不为0,为点权。 代码: #include<bits/s...原创 2018-03-25 20:20:53 · 413 阅读 · 0 评论 -
洛谷 P1073 最优贸易
题目:最优贸易 思路: tarjan+dp。 要注意缩点后仍要判断每个点是否可达终点。 代码: #include<bits/stdc++.h> using namespace std; #define maxn 100000 #define maxm 500000 #define read(x) scanf("%d",&x) int n,m; int w[maxn+5]; ...原创 2018-11-01 16:04:08 · 186 阅读 · 0 评论