抽离题意

求删除一条树边和一条非树边后将图分成不连通的两部分的方案数

对于一棵树,再加入一条边就会产生环。若只有一个环,说明只加入了一条非树边 (x, y),记 lca 为 l, 那么

对于任意一条 (x, l) and (y, l) 上的树边,都会产生 1 的贡献,也就是说若一条树边可以产生 1 的贡献,

那么该边必须只存在于一个环中,这样的话,对于每条非树边,在树上 (x, l) and (y, l) 的边 +1,这样找出

权值为 1 的边,对答案的贡献为 1 ,当然如果某条边不存在于任意环,那么它的贡献为 m。

树上差分即可

#include <bits/stdc++.h>

const int N = 1e5 + 10;

std:: vector <int> Vec[N];
int n, m;
int f[N][27];
int deep[N]; void Dfs(int u, int f_, int dep) {
int S = Vec[u].size();
deep[u] = dep;
for(int i = 0; i < S; i ++) {
int v = Vec[u][i];
if(v == f_) continue;
f[v][0] = u;
Dfs(v, u, dep + 1);
}
} void Pre() {
for(int j = 1; j <= 25; j ++)
for(int i = 1; i <= n; i ++)
f[i][j] = f[f[i][j - 1]][j - 1];
} inline int Lca(int x, int y) {
if(deep[x] < deep[y]) std:: swap(x, y);
int del = deep[x] - deep[y];
for(int i = 0; (1 << i) <= del; i ++) if(del & (1 << i)) x = f[x][i];
if(x == y) return x;
for(int i = 24; i >= 0; i --) if(f[x][i] != f[y][i]) x = f[x][i], y = f[y][i];
return f[x][0];
} int Cnt[N]; void Dfs_ans(int u, int f_) {
int S = Vec[u].size();
for(int i = 0; i < S; i ++) {
int v = Vec[u][i];
if(v == f_) continue;
Dfs_ans(v, u);
Cnt[u] += Cnt[v];
}
} int main() {
std:: cin >> n >> m;
for(int i = 1; i < n; i ++) {
int u, v; std:: cin >> u >> v;
Vec[u].push_back(v), Vec[v].push_back(u);
}
Dfs(1, 0, 1);
Pre();
for(int i = 1; i <= m; i ++) {
int x, y;
std:: cin >> x >> y;
Cnt[x] ++, Cnt[y] ++, Cnt[Lca(x, y)] -= 2;
}
Dfs_ans(1, 0);
int Answer = 0;
for(int i = 2; i <= n; i ++) {
if(Cnt[i] == 0) Answer += m;
else if(Cnt[i] == 1) Answer ++;
}
std:: cout << Answer;
return 0;
}

loj #10131的更多相关文章

  1. LOJ #10131 「一本通 4.4 例 2」暗的连锁

    LOJ #10131 「一本通 4.4 例 2」暗的连锁 给一棵 \(n\) 个点的树加上 \(m\) 条非树边 , 现在需要断开一条树边和一条非树边使得图不连通 , 求方案数 . $n \le 10 ...

  2. 【LOJ#10131】暗的锁链

    题目大意:给定一个 N 个点无向图的一棵生成树和另外 M 条边,第一次去掉生成树中的一条边,第二次去掉另外 M 条边中的一条边,求有多少种情况可以使得给定的无向图不连通. 题解:首先考虑该生成树,若新 ...

  3. uva 10131 Is Bigger Smarter?(DAG最长路)

    题目连接:10131 - Is Bigger Smarter? 题目大意:给出n只大象的属性, 包括重量w, 智商s, 现在要求找到一个连续的序列, 要求每只大象的重量比前一只的大, 智商却要小, 输 ...

  4. Uva 10131 Is Bigger Smarter? (LIS,打印路径)

    option=com_onlinejudge&Itemid=8&page=show_problem&problem=1072">链接:UVa 10131 题意: ...

  5. [Noi2016]区间 BZOJ4653 洛谷P1712 Loj#2086

    额... 首先,看到这道题,第一想法就是二分答案+线段树... 兴高采烈的认为我一定能AC,之后发现n是500000... nlog^2=80%,亲测可过... 由于答案是求满足题意的最大长度-最小长 ...

  6. Loj #2192. 「SHOI2014」概率充电器

    Loj #2192. 「SHOI2014」概率充电器 题目描述 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: 「采用全新纳米级加工技术,实现元件与导线能否通电完 ...

  7. Loj #3096. 「SNOI2019」数论

    Loj #3096. 「SNOI2019」数论 题目描述 给出正整数 \(P, Q, T\),大小为 \(n\) 的整数集 \(A\) 和大小为 \(m\) 的整数集 \(B\),请你求出: \[ \ ...

  8. Loj #3093. 「BJOI2019」光线

    Loj #3093. 「BJOI2019」光线 题目描述 当一束光打到一层玻璃上时,有一定比例的光会穿过这层玻璃,一定比例的光会被反射回去,剩下的光被玻璃吸收. 设对于任意 \(x\),有 \(x\t ...

  9. Loj #3089. 「BJOI2019」奥术神杖

    Loj #3089. 「BJOI2019」奥术神杖 题目描述 Bezorath 大陆抵抗地灾军团入侵的战争进入了僵持的阶段,世世代代生活在 Bezorath 这片大陆的精灵们开始寻找远古时代诸神遗留的 ...

随机推荐

  1. harbor helm仓库使用

    harbor helm仓库使用 官方文档地址:https://github.com/goharbor/harbor Monocular 从1.0 开始专注于helm 的UI展示,对于部署以及维护已经去 ...

  2. 论文笔记 Large Pose 3D Face Reconstruction from a Single Image via Direct Volumetric CNN Regression

    Large Pose 3D Face Reconstruction from a Single Image via Direct Volumetric CNN Regression 该文献采用一个新型 ...

  3. windows cmd下列出当前目录下的所有文件

    使用的命令是dir 如,列出当前目录下的目录及文件名到1.txt: dir /b >1.txt 只列出某类文件 dir *.txt  /b >1.txt

  4. 移动Web深度剖析

    随着前端技术的急速发展,随着互联网行业的日益发展,HTML5作为一种比较新型的开发技术早已经被很多大的企业所应用,通过HTML5语言可以开发适用于任何设备上的酷炫网站页面,所以HTML5的发展趋势可想 ...

  5. 在angular 8中使用 less

    在angular 6中使用 less 新项目 ng new [appname] --style less 已有的项目 修改 *.css 文件及引用处后缀名为 less并在 angular.json 文 ...

  6. 【阅读笔记:散列表】Javascript任何对象都是一个散列表(hash表)!

    什么是散列表? 散列表是Dictionary(字典)的一种散列表实现方式,字典传送门 一个很常见的应用是使用散列表来表示对象.Javascript语言内部就是使用散列表来表示每个对象.此时,对象的每个 ...

  7. Java 之 函数式编程

    一.Lambda 的延迟执行 有些场景的代码执行后,结果不一定会被使用,从而造成性能浪费.而Lambda表达式是延迟执行的,这正好可以作为解决方案,提升性能 . 性能浪费的日志案例 注意:日志可以帮助 ...

  8. 关于近期使用webpack所引发的思考

    近期,(使其也挺长时间了).使用了一段时间的webpack. 但是在使用期间个人感觉并不想网上说的那样好,个人对webpack的评价并不是很高,甚至有点反感使用webpack. 个人感觉使用webpa ...

  9. Maven版本管理

    一.Maven项目打包的两种方式 二.如何优雅地修改多模块maven项目中的版本号 三.一个项目使用另一个项目  一.Maven项目打包的两种方式: 1.依赖工具比如eclipse 2.使用命令行: ...

  10. Python——2x和3x的区别汇总

    1. 初始解释器编码: 2x:ascii 编码(不自持中文) 3x:unicode编码 推荐全部更换为utf-8 2. 输出方式不同 2x:print ‘你好’2.7版本的两种都支持 3x:print ...