俩个点之间的路径+1,可以使用树上差分,cnt【x】+1,cnt【y】+1 cnt【lca(x,y)】-=2; 实现边差分操作; 差分之后求前缀和,cnt【】数组; 使用dfs 记录每个点的子节点之和; boolvis[N];voiddfs(intx)//求子树的权值和;{ vis[x]=true;for(inti=h[x];i!=-1;i=ne[i]) {inty=e[i];if(vis[...
POJ3417(树上差分) 会卡vector。 1constintmaxn = 1e5 +5;2intn, m, Ans;3inthead[maxn], nxt[maxn *2], to[maxn *2], tot;4intvis[maxn], f[maxn];5intd[maxn], sum[maxn];6vector<int>q[maxn];78inlinevoidAdd(intu,intv) {9to[++tot] = v, nxt[tot] = head[u], head...
这里有一个技巧,我们假设dp[i]为父结点指向i的这条边(树边)被覆盖的次数,被覆盖了几次,就在几个连通分量里面了 假设新边为(u,v),u和v的LCA为lca,那么就dp[u]++, dp[v]++, dp[lca] -= 2 为什么要这么做了,因为我们后面会从下面往上更新,从叶结点更新到根结点,那样是不是u–>lca–>根的所有的...
【POJ3417】Network-LCA算法+树上差分 题目大意:一棵有N个点的树,再往里面加入M条新边,现在要破坏其中的两条边,要求一条是原来树中的边,一条是新边,求方案的数量。 做法:点击打开链接 以下是本人代码: #include <cstdio> #include <cstdlib> #include <cstring> #include <iostream> #include <algorithm>...
hzCPPOJ 竞赛&作业 课程辅助 来源/分类 状态 排名 题库 常见问答 打字训练 登录 求正方形的面积 时间限制: 1 s 内存限制: 128 MB 提交:548 正确:458 分值:35 提交 查看代码 题目描述已知正方形的边长,求正方形的面积。已知的边长即是通过用户输入得到。
POJ 3417 Network 2019-04-04 算法竞赛 数据结构-树链剖分 图论-LCA 编辑文章 题意 给一棵有 nn 个节点的树,然后再连 mm 条不重合的附加边,可以删除一条树边和一条附加边,问有多少种删除方法可以使树断裂。 题解 显然,每次加一条边以后树上一定会形成环,这个环任意断附加边就可以形成树,而树...
poj3417(LCA+DP) 题目连接:http://poj.org/problem?id=3417 tarjan+树DP 来自:http://www.cnblogs.com/scau20110726/archive/2013/05/31/3110666.html 1#include<cstdio>2#include<cstring>3#include<algorithm>4#include<cmath>5usingnamespacestd;6constintN=100005;7constintQ=100005;89intte,tq;10int...
(倍增LCA+树上差分)POJ 3417:【例 2】暗的连锁 题意:先给出一棵无根树,然后下面再给出m条边,把这m条边连上,然后每次你能毁掉两条边,规定一条是树边,一条是新边,问有多少种方案能使树断裂。 STEP ONE: 我们考虑所有的新边: 对于新边(u,v),必然会和树边构成一个环:u-->lca(u,v)-->v--->...
树上差分(poj3417) 传送门 对题意的转化其实挺巧妙的。 可以看出来是在树上再加“附加边”,加了附加边的即形成环。形成环的定要删除一条主要边和一条附加边才能分为两部分。 如添加了附加边(x,y),相当于x到y的所有“主要边”被覆盖一次。 若第一步把被覆盖0次的主要边切断,第二步可任意切断一条附加...
poj3417 Network——LCA+树上差分 http://poj.org/problem?id=3417 根据一条边被几个环覆盖来判断能不能删、有几种情况等; 用树上差分,终点 s++,LCA s-=2,统计时计算子树s值的和即可; 用ST表做LCA,不知为何WA了: #include<iostream>#include<cstdio>#include<cstring>usingnamespacestd;intconstMAXN=...