1. #include <cstdio>
  2. #include <cstring>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6. int m, n, q;
  7. const int maxn = ;
  8. int fa[maxn];
  9. int Rank[maxn];
  10.  
  11. void init(){
  12. for (int i = ; i <= n; i++){
  13. Rank[i] = ;
  14. fa[i] = i;
  15. }
  16. }
  17.  
  18. struct node
  19. {
  20. int u; //路的前端
  21. int v; //路的后端
  22. int l; //成本
  23. }edge[maxn];
  24.  
  25. struct Q
  26. {
  27. int l, id, ans;
  28. }que[maxn];
  29.  
  30. bool cmp(node a, node b){
  31. return a.l < b.l;
  32. }
  33.  
  34. bool cmp1(Q a, Q b){
  35. return a.l < b.l; //从小到大排序
  36. }
  37.  
  38. bool cmp2(Q a, Q b){
  39. return a.id < b.id;
  40. }
  41.  
  42. int find(int x){
  43. if (x == fa[x])
  44. return x;
  45. return fa[x] = find(fa[x]);
  46. }
  47.  
  48. int Set_Union(int x, int y){
  49. int fx = find(x);
  50. int fy = find(y);
  51. if (fx == fy)
  52. return ;
  53. fa[fy] = fx;
  54. int t = Rank[fx];
  55. Rank[fx] = Rank[fx] + Rank[fy];
  56. return t*Rank[fy];
  57. }
  58.  
  59. int main(){
  60. while (~scanf("%d%d%d", & n, &m, &q)){
  61. init();
  62. que[].ans = ;
  63. for (int i = ; i <= m; i++){
  64. scanf("%d%d%d", &edge[i].v, &edge[i].u, &edge[i].l);
  65. }
  66. for (int i = ; i <= q; i++){
  67. scanf("%d", &que[i].l);
  68. que[i].id = i;
  69. que[i].ans = ;
  70. }
  71. sort(edge + ,edge + + m, cmp);
  72. sort(que + , que + + q, cmp1);
  73. int cur = ;
  74. for (int i = ; i <= q; i++){
  75. que[i].ans = que[i - ].ans;
  76. while (edge[cur].l <= que[i].l&&cur <= m){
  77. que[i].ans += Set_Union(edge[cur].u, edge[cur].v);
  78. cur++;
  79. }
  80. }
  81. sort(que + , que + + q, cmp2);
  82. for (int i = ; i <= q; i++){
  83. printf("%d\n", que[i].ans);
  84. }
  85.  
  86. }
  87. //system("pause");
  88. return ;
  89. }

hdu3938 Portal 离线+并查集的更多相关文章

  1. [bzoj1015](JSOI2008)星球大战 starwar(离线+并查集)

    Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武 器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通 ...

  2. ACM学习历程—Hihocoder 1291 Building in Sandbox(dfs && 离线 && 并查集)

    http://hihocoder.com/problemset/problem/1291 前几天比较忙,这次来补一下微软笔试的最后一题,这题是这次微软笔试的第四题,过的人比较少,我当时在调试B题,没时 ...

  3. HDU5441 Travel 离线并查集

    Travel Problem Description Jack likes to travel around the world, but he doesn’t like to wait. Now, ...

  4. [USACO18FEB] Snow Boots G (离线+并查集)

    题目大意:略 网上各种神仙做法,本蒟蒻只想了一个离线+并查集的做法 对所有靴子按最大能踩的深度从大到小排序,再把所有地砖按照积雪深度从大到小排序 一个小贪心思想,我们肯定是在 连续不能踩的地砖之前 的 ...

  5. hdu3938 Portal 离线的并查集

    离线算法是将全部输入都读入,计算出所有的答案以后再输出的方法.主要是为避免重复计算.类似于计算斐波那契数列的时候用打表的方法. 题目:给一个无向图,求有多少个点对,使得两点间的路径上的花费小于L,这里 ...

  6. hdu 3938 Portal(并查集+离线+kruskal)2011 Multi-University Training Contest 10

    搜了题解才把题搞明白.明白之后发现其实题意很清晰,解题思路也很清晰,只是题目表述的很不清晰…… 大意如下—— 给你一个无向图,图中任意两点的距离是两点间所有路径上的某一条边,这条边需要满足两个条件:1 ...

  7. 【杭电OJ3938】【离线+并查集】

    http://acm.hdu.edu.cn/showproblem.php?pid=3938 Portal Time Limit: 2000/1000 MS (Java/Others)    Memo ...

  8. BZOJ4551 Tjoi2016&Heoi2016树(离线+并查集)

    似乎是弱化的qtree3.树剖什么的非常无脑.考虑离线.并查集维护每个点的最近打标记祖先,倒序处理,删除标记时将其与父亲合并即可. #include<iostream> #include& ...

  9. Artwork Gym - 101550A 离线并查集

    题目:题目链接 思路:每个空白区域当作一个并查集,因为正着使用并查集分割的话dfs会爆栈,判断过于复杂也会导致超时,我们采用离线反向操作,先全部涂好,然后把黑格子逐步涂白,我们把每个空白区域当作一个并 ...

随机推荐

  1. google protocol buffer的原理和使用(一)

    一.简单的介绍      Protocol buffers是一个用来序列化结构化数据的技术,支持多种语言诸如C++.Java以及Python语言.能够使用该技术来持久化数据或者序列化成网络传输的数据. ...

  2. python xmlrpc

    rpc 协议 RPC = Remote Procedure Call Protocol,即远程过程调用协议. xml rpc 协议 使用http协议作为传输协议,使用xml文本传输命令和数据的一种协议 ...

  3. CSDN-markdown编辑器之从线上导入Markdown文件

      CSDN-markdown编辑器支持从线上导入Markdown文件的功能,假设你用其他支持Markdown的编辑器在网上写了博客文章或说明档,想公布到CSDN博客中,就能够使用本功能非常方便的完毕 ...

  4. 初解C#类、结构、弱引用

    一.类 类中的数据和函数称为类的成员 数据成员是包含类的数据----字段.常量和事件的成员.数据成员可以是静态数据.类成员总是实例成员,除非用static进行显示的声明. 事件是类的成员,在发生某些行 ...

  5. Ajax_HTTP请求以及响应

    什么是HTTP请求? 就是从用户的浏览器端向服务器端发送请求 一个HTTP请求一般由四个部分组成 1.HTTP请求的方法或者动作,比如GET或者POST请求 2.请求的URL,也就是请求的地址 3.请 ...

  6. 安装NLTK

    在网上找了一圈,没找到几个靠谱的安装流程,在http://nltk.org/install.html上找到各平台下安装流程: Windows平台: 以下操作假定你的机器上还没有安装Python,如果你 ...

  7. java zip压缩优化版 解决压缩后文件一直被占用无法删除

    最近进行zip操作,从网上找到一个处理方法,但是经过试验存在一些bug,主要是文件流的申明存在问题,导致jvm一直占用文件而不释放,特意把自己修改的发出来,已备记录 import java.io.Bu ...

  8. cat /proc/cpuinfo | awk -F: '/name/{print $2}' | uniq -c

    cat /proc/cpuinfo | awk -F: '/name/{print $2}' | uniq -c

  9. thinkphp 防sql注入

    $Model->where("id=%d and username='%s' and xx='%f'",array($id,$username,$xx))->selec ...

  10. Mysql常见函数

    一.单行函数 1.字符函数 concat拼接 substr截取子串 upper转换成大写 lower转换成小写 trim去前后指定的空格和字符 ltrim去左边空格 rtrim去右边空格 replac ...