K小生成树(kmst)

思路:

暴力+并查集

枚举边的子集,用并查集判断两个点联不联通

代码:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define fi first
  4. #define se second
  5. #define pi acos(-1.0)
  6. #define LL long long
  7. //#define mp make_pair
  8. #define pb push_back
  9. #define ls rt<<1, l, m
  10. #define rs rt<<1|1, m+1, r
  11. #define ULL unsigned LL
  12. #define pll pair<LL, LL>
  13. #define pli pair<LL, int>
  14. #define pii pair<int, int>
  15. #define piii pair<pii, int>
  16. #define mem(a, b) memset(a, b, sizeof(a))
  17. #define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
  18. #define fopen freopen("in.txt", "r", stdin);freopen("out.txt", "w", stout);
  19. //head
  20.  
  21. const int N = ;
  22. piii e[N];
  23. int fa[N], tmp[(<<) + ];
  24. int n, m, top = ;
  25. int Find(int x) {
  26. if(x == fa[x]) return x;
  27. else return Find(fa[x]);
  28. }
  29. void dfs(int i, int cnt, int len) {
  30. if(m-i+ + cnt < n-) return ;//这个剪枝很优秀
  31. if(i == m+) {
  32. if(cnt == n-) tmp[++top] = len;
  33. return ;
  34. }
  35. dfs(i+, cnt, len);
  36. int u = Find(e[i].fi.fi), v = Find(e[i].fi.se);
  37. if(u != v) {
  38. fa[u] = v;
  39. dfs(i+, cnt+, len+e[i].se);
  40. fa[u] = u;
  41. }
  42. }
  43. int main() {
  44. int l, r, q;
  45. scanf("%d %d", &n, &m);
  46. for (int i = ; i <= m; i++) {
  47. scanf("%d %d %d", &e[i].fi.fi, &e[i].fi.se, &e[i].se);
  48. }
  49. for (int i = ; i <= n; i++) fa[i] = i;
  50. dfs(, , );
  51. sort(tmp+, tmp++top);
  52. scanf("%d", &q);
  53. while(q--) {
  54. scanf("%d %d", &l, &r);
  55. printf("%d\n", upper_bound(tmp+, tmp++top, r) - lower_bound(tmp+, tmp++top, l));
  56. }
  57. return ;
  58. }

牛客OI周赛4-提高组 A K小生成树(kmst)的更多相关文章

  1. 牛客OI周赛9-提高组题目记录

    牛客OI周赛9-提高组题目记录 昨天晚上做了这一套比赛,觉得题目质量挺高,而且有一些非常有趣而且非常清奇的脑回路在里边,于是记录在此. T1: 扫雷 题目链接 设 \(f_i\) 表示扫到第 \(i\ ...

  2. 牛客OI周赛8-提高组A-用水填坑

    牛客OI周赛8-提高组A-用水填坑 题目 链接: https://ac.nowcoder.com/acm/contest/403/A 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制: ...

  3. 牛客OI周赛2-提高组

    A.游戏 链接:https://www.nowcoder.com/acm/contest/210/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语 ...

  4. 牛客OI周赛11-普及组 B Game with numbers (数学,预处理真因子)

    链接:https://ac.nowcoder.com/acm/contest/942/B 来源:牛客网 Game with numbers 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C+ ...

  5. 牛客OI周赛7-提高组 A 小睿睿的等式

    链接:https://ac.nowcoder.com/acm/contest/371/A来源:牛客网 小睿睿在游戏开始时有n根火柴棒,他想知道能摆成形如“A+B=n”的等式且使用的火柴棒数也恰好等于n ...

  6. 牛客OI周赛7-提高组 B小睿睿的询问(ST打表)

    链接:https://ac.nowcoder.com/acm/contest/371/B来源:牛客网 小睿睿的n个妹纸排成一排,每个妹纸有一个颜值val[i].有m个询问,对于每一个询问,小睿睿想知道 ...

  7. 牛客OI周赛7-普及组 解题报告

    出题人好评. 评测机差评. A 救救喵咪 二位偏序.如果数据范围大的话直接树状数组,不过才1000就\(O(n^2)\)暴力就ok了. #include <bits/stdc++.h> s ...

  8. 牛客OI周赛10-普及组-A眼花缭乱的街市-(加速+二分)

    https://ac.nowcoder.com/acm/contest/901/A 很简单的一道题,全场只有20+AC,卡时间.新学了cin加速语法和数组二分查找的函数调用. 知道有个读写挂,可以加速 ...

  9. 牛客OI周赛8-普及组

    https://ac.nowcoder.com/acm/contest/543#question A. 代码: #include <bits/stdc++.h> using namespa ...

随机推荐

  1. Mysql 存储过程中使用多游标

    Mysql 存储过程中使用多游标 drop procedure IF EXISTS test_proc_1; create procedure test_proc_1() begin ; ) ; ) ...

  2. linux 函数库使用

    程序函数库可分为3种类型:静态函 数库(static libraries).共享函数库(shared libraries)和动态加载函数库(dynamically loaded libraries) ...

  3. netstat -ano输出中的ESTABLISHED off

    今天,我们性能测试的环境出现个奇怪现象,通过oci direct load回库的进程似乎僵死了,应用端cpu 200%(两个线程在跑,一个是一直在ocidirectload没反应,另外一个是正在sem ...

  4. 深度学习demo

    1. Stanford Convolutional Neural Network on the MNIST digits dataset http://cs.stanford.edu/people/k ...

  5. Android - Resource 之 Drawable小结

    本篇直接选择性地翻译官方开发指南 ============================= Drawable有十种类型,如下 (1) - Bitmap file:这个简单,也可以用xml来更详细的定 ...

  6. linux 安装二进制包程序一般步骤

    参考:https://blog.csdn.net/linzhiji/article/details/6774410 configure/make/make install的作用 这些都是典型的使用GN ...

  7. Codeforces Round #439 (Div. 2) Problem E (Codeforces 869E) - 暴力 - 随机化 - 二维树状数组 - 差分

    Adieu l'ami. Koyomi is helping Oshino, an acquaintance of his, to take care of an open space around ...

  8. bzoj 1093 最大半连通子图 - Tarjan - 拓扑排序 - 动态规划

    一个有向图G=(V,E)称为半连通的(Semi-Connected),如果满足:?u,v∈V,满足u→v或v→u,即对于图中任意两点u,v,存在一条u到v的有向路径或者从v到u的有向路径.若G'=(V ...

  9. ODAC(V9.5.15) 学习笔记(十二)TOraLoader

    名称 类型 说明 Columns TDAColumns 需要载入数据的每个字段定义 LoadMode TLoadMode 载入模式,包括: lmDirect 通过内部数据缓冲区载入到数据库中 lmDM ...

  10. .net Core 依赖注入 Add********说明

    AddTransient瞬时模式:每次请求,都获取一个新的实例.即使同一个请求获取多次也会是不同的实例 AddScoped:每次请求,都获取一个新的实例.同一个请求获取多次会得到相同的实例 AddSi ...