結果

問題 No.2563 色ごとのグループ
ユーザー chaemonchaemon
提出日時 2023-12-02 15:17:45
言語 Nim
(2.0.2)
結果
AC  
実行時間 223 ms / 2,000 ms
コード長 16,228 bytes
コンパイル時間 4,626 ms
コンパイル使用メモリ 95,932 KB
実行使用メモリ 29,824 KB
最終ジャッジ日時 2023-12-02 15:17:55
合計ジャッジ時間 8,492 ms
ジャッジサーバーID
(参考情報)
judge9 / judge12
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
6,676 KB
testcase_01 AC 1 ms
6,676 KB
testcase_02 AC 2 ms
6,676 KB
testcase_03 AC 1 ms
6,676 KB
testcase_04 AC 2 ms
6,676 KB
testcase_05 AC 2 ms
6,676 KB
testcase_06 AC 2 ms
6,676 KB
testcase_07 AC 2 ms
6,676 KB
testcase_08 AC 2 ms
6,676 KB
testcase_09 AC 2 ms
6,676 KB
testcase_10 AC 1 ms
6,676 KB
testcase_11 AC 2 ms
6,676 KB
testcase_12 AC 2 ms
6,676 KB
testcase_13 AC 2 ms
6,676 KB
testcase_14 AC 3 ms
6,676 KB
testcase_15 AC 3 ms
6,676 KB
testcase_16 AC 3 ms
6,676 KB
testcase_17 AC 2 ms
6,676 KB
testcase_18 AC 2 ms
6,676 KB
testcase_19 AC 4 ms
6,676 KB
testcase_20 AC 11 ms
6,676 KB
testcase_21 AC 7 ms
6,676 KB
testcase_22 AC 5 ms
6,676 KB
testcase_23 AC 8 ms
6,676 KB
testcase_24 AC 81 ms
12,544 KB
testcase_25 AC 75 ms
13,568 KB
testcase_26 AC 109 ms
18,984 KB
testcase_27 AC 119 ms
28,648 KB
testcase_28 AC 122 ms
20,612 KB
testcase_29 AC 191 ms
29,824 KB
testcase_30 AC 205 ms
29,824 KB
testcase_31 AC 171 ms
29,824 KB
testcase_32 AC 184 ms
29,824 KB
testcase_33 AC 219 ms
25,512 KB
testcase_34 AC 216 ms
24,208 KB
testcase_35 AC 217 ms
24,292 KB
testcase_36 AC 223 ms
25,544 KB
testcase_37 AC 223 ms
25,544 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

import macros
macro Please(x): untyped = nnkStmtList.newTree()

Please use Nim-ACL
Please use Nim-ACL
Please use Nim-ACL


static:
  when not defined SecondCompile:
    # md5sum: 98981870bc02ae70ef8434588707ba34  atcoder.tar.xz

    template getFileName():string = instantiationInfo().filename
    let fn = getFileName()
    block:
      let (output, ex) = gorgeEx("if [ -e ./atcoder ]; then exit 1; else exit 0; fi")
      # doAssert ex == 0, "atcoder directory already exisits"
    discard staticExec("echo \"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\" | base64 -d > atcoder.tar.xz && tar -Jxvf atcoder.tar.xz")
    let (output, ex) = gorgeEx("nim cpp -d:release -d:SecondCompile -d:danger --path:./ --opt:speed --multimethods:on --warning[SmallLshouldNotBeUsed]:off --checks:off -o:a.out " & fn)
    discard staticExec("rm -rf ./atcoder");doAssert ex == 0, output;quit(0)


when defined SecondCompile:
  const DO_CHECK = false;const DEBUG = false
else:
  const DO_CHECK = true;const DEBUG = false
const
  USE_DEFAULT_TABLE = true
  DO_TEST = false

# see https://github.com/zer0-star/Nim-ACL/tree/master/src/atcoder/extra/header/chaemon_header.nim
include atcoder/extra/header/chaemon_header


# see https://github.com/zer0-star/Nim-ACL/tree/master/src/atcoder/dsu.nim
import atcoder/dsu


proc solve() =
  # 色ごとにDSUを作る
  let N, M = nextInt()
  var
    C = Seq[N: nextInt() - 1]
    col_ct = Seq[N: seq[int]]
    node_to_colid = Seq[N: int]
  for i in N:
    node_to_colid[i] = col_ct[C[i]].len
    col_ct[C[i]].add i
  debug node_to_col_id, col_ct
  var ds = Seq[DSU]
  for i in N:
    ds.add initDSU(col_ct[i].len)
  ans := 0
  for _ in M:
    var u, v = nextInt() - 1
    if C[u] != C[v]: continue
    let
      c = C[u]
      ui = node_to_colid[u]
      vi = node_to_colid[v]
    debug c, ui, vi
    if ds[c].leader(ui) != ds[c].leader(vi):
      ds[c].merge(ui, vi)
  for i in N:
    for j in col_ct[i].len - 1:
      let
        u = col_ct[i][j]
        v = col_ct[i][j + 1]
        c = C[u]
        ui = node_to_colid[u]
        vi = node_to_colid[v]
      if ds[c].leader(ui) != ds[c].leader(vi):
        ans.inc
        ds[c].merge(ui, vi)
  echo ans
  discard

solve()

0