1. paizaラーニングトップ
  2. レベルアップ問題集
  3. Union-Find・クラスカル法メニュー(言語選択)
  4. 問題一覧 VB(Beta)編
  5. 提携企業 VB(Beta)編

Union-Find・クラスカル法メニューのサムネイル
提携企業 VB(Beta)編(paizaランク A 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

paiza 国には n 個の企業があり、それぞれの企業価値は v_0, ..., v_{n-1} です。paiza 国では、自国の経済を活発化させるような、大企業グループを形成したいと考えています。そのため、自国の企業に業務提携の交渉をするように促しました。

その結果、q 回の交渉がおこなわれ、いくつかの提携企業グループに分けられました。しかし、すべての交渉がうまくいったわけではありません。
ある企業 a が別の企業 b に対して交渉をおこなったとき、

  • (a の提携企業の企業価値の平均) > (b の提携企業の企業価値の平均)
  • 企業 a と企業 b がすでに同じ提携企業グループに属している
  • のどちらかが成り立つときのみ、交渉が成立しました。

    提携企業グループの市場価値をその提携企業グループに属する企業の企業価値の総和とします。q 回の交渉を与えられた順番に処理していったとき、最終的な提携企業グループの市場価値の最大値を出力してください。

    入力される値

    n q
    v_0 ... v_{n-1}
    a_1 b_1
    ...
    a_q b_q

    ・ 1 行目に、企業の数を表す整数 n と交渉の回数を表す整数 q が半角スペース区切りで与えられます。
    ・ 2 行目に、企業 i (0 ≦ i ≦ n-1) の企業価値が左から順番に半角スペース区切りで与えられます。
    ・ 1 + j 行目 (1 ≦ j ≦ q) に、j 回目の交渉をおこなう企業を表す整数 a_j とその交渉を受ける企業を表す整数 b_j が半角スペース区切りで与えられます。


    入力値最終行の末尾に改行が1つ入ります。
    文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
    期待する出力

    最終的な提携企業グループの市場価値の最大値を 1 行で出力してください、合計 n 行出力してください。
    末尾に改行を入れ、余計な文字、空行を含んではいけません。

    条件

    すべてのテストケースにおいて、以下の条件をみたします。

    ・ 入力はすべて整数
    ・ 1 ≦ n ≦ 10,000
    ・ 1 ≦ q ≦ n^2 / 2
    ・ 1 ≦ v_i ≦ 100 (0 ≦ i ≦ n-1)
    ・ 0 ≦ a_j, b_j ≦ n-1 (1 ≦ j ≦ q)
    ・ a_j ≠ b_j (1 ≦ j ≦ q)

    入力例1

    5 5
    100 90 3 3 3
    1 0
    1 2
    1 3
    1 4
    1 0

    出力例1

    100

    入力例2

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

    出力例2

    17

    問題一覧へ戻る

    ページの先頭へ戻る