随笔分类 - LCA
摘要:一开始题目没看清楚,以为是增加那条边后还有多少桥,所以就当做是无向图tarjan缩点后建树,然后求u,v的最近公共祖先,一直wa。后来再看题目后才发现边放上去后不会拿下来了,即增加i条边后桥的数量。#include #include #include #include using namespace std;const int maxn = 100100;const int maxm = 200100;struct node{ int v,next;}edge[maxm*2];int head[maxn],low[maxn],dfn[maxn],fa[maxn],stack[maxn]...
阅读全文
摘要:第一次按常规的方法求,将所有的查询的u,v,和最近公共祖先都保存起来,然后用tarjan+并查集求最近公共祖先。因为询问的次数过多,所以在保存查询的时候总是MLE,后来参考了一下别人的代码,才突然觉悟,可以先将u,v,和其最近公共祖先保存到数组,然后再求结果,为什么不能直接保存其结果了。如果只保存结果的话,保存查询操作就可以节约1/3的内存,所以基本可以过了。代码如下:方法一:#include #include #include #include #include using namespace std;const int maxn = 10100;vector >tree[maxn],
阅读全文

浙公网安备 33010602011771号