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 2147483647stru原创 2021-10-22 23:21:38 · 161 阅读 · 0 评论 -
tarjan求割点模板
题目:【模板】割点(割顶) 注意:1、第一个点要特判。2、一开始作死写了个判重边,把重边去掉了,WA了很久……后来才发现去了重边后悔少一些双联通分量 代码:#include<bits/stdc++.h>using namespace std;#define maxn 100000int n,m;vector<int> a[maxn+...原创 2018-03-24 20:03:11 · 343 阅读 · 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 · 237 阅读 · 0 评论 -
洛谷3387 模板 缩点
题目:缩点 思路:tarjan缩点+最长路。 注意:1、用dijkstra求最长路时,优先队列中的<运算符要反过来。2、需要把所有入度为0的点为起点跑一遍最长路。3、每次求最长路时,dist数组不要重新初始化。4、缩点后的点权为缩点前的所有点权之和。5、最开始初始化dist[s]的值不为0,为点权。 代码:#include<bits/s...原创 2018-03-25 20:20:53 · 372 阅读 · 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 · 167 阅读 · 0 评论