zoukankan      html  css  js  c++  java
  • 公路建设 (highway.c/cpp/pas)

    2、公路建设 (highway.c/cpp/pas)

    在滨海市一共有 n 个城市,编号依次为 1 到 n,它们之间计划修建 m 条双向道路,其中 修建第 i 条道路的费用为 ci。

    海霸王作为滨海市公路建设项目的总工程师,他决定选定一个区间 [l,r],仅使用编号在 该区间内的道路。

    他希望选择一些道路去修建,使得连通块的个数尽量少,同时,他不喜欢修 建多余的道路,因此每个连通块都可以看成一棵树的结构。

    为了选出最佳的区间,海霸王会不断选择 q 个区间,请写一个程序,帮助海霸王计算每 个区间内修建公路的最小总费用。

    Input 第一行包含三个正整数 n, m, q,表示城市数、道路数和询问数。 接下来 m 行,每行三个正整数 ui, vi, ci,表示一条连接城市 ui 和 vi 的双向道路,费用为 ci。 接下来 q 行,每行两个正整数 li, ri,表示一个询问。

    Output 输出 q 行,每行一个整数,即最小总费用


    solution

    发现n<=100 意味着任意一个区间的有用边数不超过100条

    我们可以用线段树维护最小生成树的边,暴力kruskal合并即可。

    查询也是一样

    效率O(m*(2nlog2n)+qlogm *(2nlog2n))

  • 相关阅读:
    高精度模板 支持各种运算 c++
    404 页面不存在
    多柱汉诺塔问题“通解”——c++
    高精度gcd
    404 页面不存在
    如何开启音乐二倍速?不下载其他软件【win10】
    如何随时学习数学
    洛谷P1004 方格取数
    Title
    Title
  • 原文地址:https://www.cnblogs.com/liankewei/p/10547103.html
Copyright © 2011-2022 走看看