zoukankan      html  css  js  c++  java
  • 15年3月CCF真题5-最小花费

    问题描述

      C国共有n个城市。有n-1条双向道路,每条道路连接两个城市,任意两个城市之间能互相到达。小R来到C国旅行,他共规划了m条旅行的路线,第i条旅行路线的起点是si,终点是ti。在旅行过程中,小R每行走一单位长度的路需要吃一单位的食物。C国的食物只能在各个城市中买到,而且不同城市的食物价格可能不同。
      然而,小R不希望在旅行中为了购买较低价的粮食而绕远路,因此他总会选择最近的路走。现在,请你计算小R规划的每条旅行路线的最小花费是多少。

    输入格式

      第一行包含2个整数n和m。
      第二行包含n个整数。第i个整数wi表示城市i的食物价格。
      接下来n-1行,每行包括3个整数u, v, e,表示城市u和城市v之间有一条长为e的双向道路。
      接下来m行,每行包含2个整数si和ti,分别表示一条旅行路线的起点和终点。

    输出格式

      输出m行,分别代表每一条旅行方案的最小花费。

    样例输入

    6 4
    1 7 3 2 5 6
    1 2 4
    1 3 5
    2 4 1
    3 5 2
    3 6 1
    2 5
    4 6
    6 4
    5 6

    样例输出

    35
    16
    26
    13

    样例说明

      对于第一条路线,小R会经过2->1->3->5。其中在城市2处以7的价格购买4单位粮食,到城市1时全部吃完,并用1的价格购买7单位粮食,然后到达终点。

    评测用例规模与约定

      前10%的评测用例满足:n, m ≤ 20, wi ≤ 20;
      前30%的评测用例满足:n, m ≤ 200;
      另有40%的评测用例满足:一个城市至多与其它两个城市相连。
      所有评测用例都满足:1 ≤ n, m ≤ 105,1 ≤ wi ≤ 106,1 ≤ e ≤ 10000。

    感觉该用扩散算法找出T,并且纪录沿途经过值,然后再进行计算,代码写一半懒得调了就删了。

  • 相关阅读:
    [CF888G] Xor-mst (Trie 树,最小生成树)
    [JSOI2010]部落划分 (最小生成树)
    [USACO15FEB]Superbull (最小生成树)
    [APIO2009]抢掠计划 ($Tarjan$,最长路)
    [APIO2015] 雅加达的摩天楼 (分块,最短路)
    [USACO07NOV]牛继电器Cow Relays (最短路,DP)
    P1266 速度限制 (最短路,图论)
    C语言编程题目(1)字符串格式化操作 手机键盘次数统计
    MOCTF RE 暗恋的烦恼
    python 面向对象 私有化浅析
  • 原文地址:https://www.cnblogs.com/Outer-Haven/p/4699189.html
Copyright © 2011-2022 走看看