結果
問題 | No.19 ステージの選択 |
ユーザー |
![]() |
提出日時 | 2017-07-26 19:47:11 |
言語 | Nim (2.2.0) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 1,466 bytes |
コンパイル時間 | 3,613 ms |
コンパイル使用メモリ | 67,840 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-06-30 01:49:01 |
合計ジャッジ時間 | 4,611 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 24 |
コンパイルメッセージ
/home/judge/data/code/Main.nim(1, 35) Warning: imported and not used: 'algorithm' [UnusedImport]
ソースコード
import sequtils,strutils,strscans,algorithm,math type unionfindtree[I : static[int]] = array[I,int] proc Init(U : var unionfindtree)= for j in 0..<U.high: U[j] = j proc find(U : unionfindtree; a : int, b :int): bool= var s = a t = b while s != U[s]: s = U[s] while t != U[t]: t = U[t] return s == t proc union(U : var unionfindtree; a : int ; b : int)= if U.find(a,b): return var s = a t = b t2 : int while s != U[s]: s = U[s] while t != U[t]: t2 = U[t] U[t] = s t = t2 U[t] = s proc root(U : unionfindtree, a :int):int= var s = a while s != U[s]: s = U[s] return s type item = tuple[id : int,level : float,S : int] var N = stdin.readline.parseInt oya = newSeqWith(N,-1) Items = newSeq[item](0) L : float S : int ans = 0.0 p : item line : string s : set[int8] uft : unionfindtree[101] uft.Init for i in 0..<N: line = stdin.readline discard scanf(line,"$f $i",L,S) p = (i,L,S - 1) uft.union(S - 1,i) Items.add(p) for i in 0..<N: s.incl(uft.root(i).int8) for i in s: var j = i.int var minoya = 100000.0 while oya[j] == -1: oya[j] = i.int minoya = min(minoya,Items[j].level) j = Items[j].S ans += minoya / 2 for t in Items: ans += t.level / 2 echo round(ans,1)