这题计算 一张图上 能走的 点对有多少个  对于每个限制边权 , 对每条边排序,对每个查询排序

然后边做克鲁斯卡尔算法 的时候变计算就好了

  1. #include <iostream>
  2. #include <algorithm>
  3. #include <string.h>
  4. #include <cstdio>
  5. #include <vector>
  6. #include <queue>
  7. using namespace std;
  8. const int maxn=;
  9. typedef long long LL;
  10. struct edg{
  11. int a,b,d;
  12. edg(int ca=,int cb=,int cd=)
  13. {
  14. a=ca; b=cb; d=cd;
  15. }
  16. bool operator <(const edg &rhs)const{
  17. return d<rhs.d;
  18. }
  19. }E[];
  20. struct query{
  21. LL id,d;
  22. query(LL cid=, LL cd= ){
  23. id=cid; d=cd;
  24. }
  25. bool operator <(const query &rhs)const {
  26. return d<rhs.d;
  27. }
  28. }Q[];
  29. LL S[maxn];
  30. LL num[maxn];
  31. int fa[maxn];
  32. int fin(int a)
  33. {
  34. return fa[a]=(fa[a]==a)?a:fin(fa[a]);
  35. }
  36. LL ans[];
  37. int main()
  38. {
  39.  
  40. int cas;
  41. scanf("%d",&cas);
  42. for(int cc=; cc<=cas; cc++)
  43. {
  44. int n,m,q;
  45. scanf("%d%d%d",&n,&m,&q);
  46. for(int i=; i<m; i++)scanf("%d%d%d",&E[i].a,&E[i].b,&E[i].d);
  47. for(int i=; i<=n; i++){fa[i]=i;S[i]=;num[i]=;}
  48. for(int i=; i<q; i++) {scanf("%I64d",&Q[i].d);Q[i].id=i; ans[i]=;}
  49. sort(E,E+m);
  50. sort(Q,Q+q);
  51. int loc=;
  52. LL D=;
  53. for(int i=; i<q; i++)
  54. {
  55. while(loc<m&&E[loc].d<=Q[i].d){
  56. int a=E[loc].a,b=E[loc].b;
  57. a=fin(a);
  58. b=fin(b);
  59. if(a==b){ loc++; continue; }
  60. D=D-S[a]-S[b];
  61. fa[b]=a;
  62. num[a]+=num[b];
  63. S[a]=1LL*num[a]*(num[a]-);
  64. D=D+S[a];
  65. loc++;
  66. }
  67. ans[Q[i].id]=D;
  68. }
  69. for(int i=; i<q; i++)
  70. printf("%I64d\n",ans[i]);
  71. }
  72. return ;
  73. }

hdu5441 并查集+克鲁斯卡尔算法的更多相关文章

  1. PKUACM 2018 D chocolate【并查集+克鲁斯卡尔】

    传送:http://poj.openjudge.cn/practice/C18D/ 依然是课件截图 #include<iostream> #include<cstdio> #i ...

  2. hdu 1233(还是畅通project)(prime算法,克鲁斯卡尔算法)(并查集,最小生成树)

    还是畅通project Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  3. 贪心算法(Greedy Algorithm)之最小生成树 克鲁斯卡尔算法(Kruskal&#39;s algorithm)

    克鲁斯卡尔算法(Kruskal's algorithm)是两个经典的最小生成树算法的较为简单理解的一个.这里面充分体现了贪心算法的精髓.大致的流程能够用一个图来表示.这里的图的选择借用了Wikiped ...

  4. 贪心算法(Greedy Algorithm)最小生成树 克鲁斯卡尔算法(Kruskal&#39;s algorithm)

    克鲁斯卡尔算法(Kruskal's algorithm)它既是古典最低的一个简单的了解生成树算法. 这充分反映了这一点贪心算法的精髓.该方法可以通常的图被表示.图选择这里借用Wikipedia在.非常 ...

  5. 最小生成树之Kruskal(克鲁斯卡尔)算法

    学习最小生成树算法之前我们先来了解下下面这些概念: 树(Tree):如果一个无向连通图中不存在回路,则这种图称为树. 生成树 (Spanning Tree):无向连通图G的一个子图如果是一颗包含G的所 ...

  6. 最小生成树--克鲁斯卡尔算法(Kruskal)

    按照惯例,接下来是本篇目录: $1 什么是最小生成树? $2 什么是克鲁斯卡尔算法? $3 克鲁斯卡尔算法的例题 摘要:本片讲的是最小生成树中的玄学算法--克鲁斯卡尔算法,然后就没有然后了. $1 什 ...

  7. 最小生成树-克鲁斯卡尔算法(kruskal's algorithm)实现

    算法描述 克鲁斯卡尔算法是一种贪心算法,因为它每一步都挑选当前最轻的边而并不知道全局路径的情况. 算法最关键的一个步骤是要判断要加入mst的顶点是否会形成回路,我们可以利用并查集的技术来做. 并查集的 ...

  8. 最小生成树——Kruscal(克鲁斯卡尔算法)

    一.核心思想 ​ 将输入的数据由小到大进行排序,再使用并查集算法(传送门)将每个点连接起来,同时求和. ​ 个人认为这个算法比较偏向暴力,有些题可能会超时. 二.例题 洛谷-P3366 题目地址:ht ...

  9. HDU 1233 还是畅通工程(模板——克鲁斯卡尔算法)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1233 题意描述: 输入n个城镇以及n*(n-1)/2条道路信息 计算并输出将所有城镇连通或者间接连通 ...

随机推荐

  1. Python操作Mysql数据库进阶篇——查询操作详解(一)

    前面我们已经介绍了在Python3.x中如何连接一个Mysql数据库,以及怎么样对这个数据库创建一个表,增删改查表里的数据.想必大家对Mysql数据库和简单的sql语句有了一定的了解,其实sql语句博 ...

  2. 在RAC执行相关操作发生ora-01031:insufficient privileges解决方法

    grid用户下 寻找命令的路径 如which crsctl su - root用户 然后根据找到的路径去执行命令 如 /u01/app/oracle/product/11.2.0/db_1/bin/c ...

  3. mysql存储引擎的简介

    前言 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建.查询.更新和删除数据.不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用不同的存储引擎,还可以 ...

  4. DevOps理论与实践总结

    DevOps指导理论与实践 [第01篇]:郭宏泽:全开源架构下的DevOps实践(转) SonarQube应用指南 [第一篇]:SonarQube Scanner报svn: E170001错误 che ...

  5. java JDBC (三) 修改

    package cn.sasa.demo3; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Pr ...

  6. python全栈开发day12

    列表 创建列表: 基本操作: 索引 切片 追加 删除 长度 切片 循环 包含 #######################列表list类中提供的方法######################## ...

  7. OC动画:CAKeyframeAnimation

    // 方法一 用法1​ Value方式 //创建动画对象 CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyP ...

  8. ros 运行rviz时出现 QXcbConnection: XCB error: 148 错误 解决方法

    出现上述问题的原因: 1.由于使用了nvc远程控制下位机: 2.rviz是一个基于opengl开发的图形插件,需要使用理论的屏幕参数(thetis' screen),由于使用了teamviewer会导 ...

  9. MySQL5.7配置基于GTID的复制

    MySQL5.7下配置GTID复制的方法: 修改主库和从库的配置文件,加入下列部分的配置项:主库:[mysqld]log-bin=mysql-binbinlog_format= ROWgtid-mod ...

  10. NYOJ 61 传纸条(一)

    双线DP #include<iostream> #include<algorithm> #include<ctype.h> #include<string&g ...