提出 #4113005
ソースコード 拡げる
Scanf.(Array.(scanf " %d %d" @@ fun n m ->
let e = make n [] in
let e_rev = make n [] in
init (n-1+m) (fun i -> scanf " %d %d" @@ fun u v ->
let u,v = u-1,v-1 in
e.(u) <- v :: e.(u);
e_rev.(v) <- u :: e_rev.(v)
) |> ignore;
let root = fst @@ fold_left (fun (root,i) ls ->
(if List.length ls = 0 then i else root),i+1
) (0,0) e_rev in
let topological_sort root =
let state = make n `Todo in
let res = ref [] in
let rec visit i = match state.(i) with
| `Done -> true
| `Temp -> false (* cycle detected *)
| `Todo -> (
state.(i) <- `Temp;
let f =
List.fold_left (fun u j ->
u && visit j
) true e.(i)
in
state.(i) <- `Done;
res := i :: !res; f
) in
assert (visit root); !res
in
let tp = topological_sort root in
let mx = make n 0 in
let res = make n 0 in
List.iter (fun v ->
List.iter (fun w ->
if mx.(w) < mx.(v) + 1 then (
mx.(w) <- mx.(v) + 1;
res.(w) <- v + 1
)
) e.(v)
) tp;
res.(root) <- 0;
iter (Printf.printf "%d ") res
))
提出情報
| 提出日時 | |
|---|---|
| 問題 | D - Restore the Tree |
| ユーザ | sk0 |
| 言語 | OCaml (4.02.3) |
| 得点 | 500 |
| コード長 | 1138 Byte |
| 結果 | AC |
| 実行時間 | 122 ms |
| メモリ | 25728 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 500 / 500 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | a01, a02 |
| All | a01, a02, b03, b04, b05, b06, b07, b08, b09, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33, b34 |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| a01 | AC | 1 ms | 384 KiB |
| a02 | AC | 1 ms | 384 KiB |
| b03 | AC | 1 ms | 384 KiB |
| b04 | AC | 1 ms | 384 KiB |
| b05 | AC | 1 ms | 384 KiB |
| b06 | AC | 117 ms | 25728 KiB |
| b07 | AC | 116 ms | 25728 KiB |
| b08 | AC | 122 ms | 25728 KiB |
| b09 | AC | 54 ms | 7936 KiB |
| b10 | AC | 54 ms | 7936 KiB |
| b11 | AC | 54 ms | 7936 KiB |
| b12 | AC | 93 ms | 15872 KiB |
| b13 | AC | 97 ms | 15872 KiB |
| b14 | AC | 96 ms | 15872 KiB |
| b15 | AC | 112 ms | 14080 KiB |
| b16 | AC | 87 ms | 11520 KiB |
| b17 | AC | 96 ms | 13056 KiB |
| b18 | AC | 82 ms | 9856 KiB |
| b19 | AC | 106 ms | 14848 KiB |
| b20 | AC | 82 ms | 10624 KiB |
| b21 | AC | 96 ms | 13184 KiB |
| b22 | AC | 89 ms | 11904 KiB |
| b23 | AC | 92 ms | 13056 KiB |
| b24 | AC | 89 ms | 12032 KiB |
| b25 | AC | 94 ms | 12544 KiB |
| b26 | AC | 108 ms | 14848 KiB |
| b27 | AC | 85 ms | 10752 KiB |
| b28 | AC | 93 ms | 12288 KiB |
| b29 | AC | 105 ms | 14848 KiB |
| b30 | AC | 103 ms | 14720 KiB |
| b31 | AC | 110 ms | 14720 KiB |
| b32 | AC | 118 ms | 14080 KiB |
| b33 | AC | 112 ms | 13568 KiB |
| b34 | AC | 85 ms | 10752 KiB |