Submission #17182584
Source Code Expand
import Foundation // 第一引数には隣接リストで表したグラフを渡す (参照渡し) // 第二引数には探索をスタートする頂点を渡す // 第三引数には x の情報をまとめたリストを渡す (参照渡し) // 第四引数には答えを保存するリストを渡す (参照渡し) // 第五引数にはすでに訪れた頂点を保存しておくリストを渡す (参照渡し) // 第六変数にはカウンターに記録する値となるものを渡す func dfs(graph:inout [[Int]], start:Int,plus:inout [Int],ans:inout [Int],visited:inout [Bool],num:Int){ // 訪問済みの頂点を記録する visited[start] = true // カウンターに値を追加 ans[start] = num+plus[start] // 隣接する頂点についてループを回す for i in graph[start]{ // すでに訪れていたらcontinue if visited[i]{ continue } // 再帰 dfs(graph:&graph,start:i,plus:&plus,ans:&ans,visited:&visited,num:num+plus[start]) } } // 標準入力の受け取り let nq = readLine()!.split(separator:" ").map{Int($0)!} let n = nq[0] let q = nq[1] var G:[[Int]] = [] for _ in 0..<n{ G.append([]) } // 木は隣接リストの形で受け取る for _ in 0..<n-1{ let ab = readLine()!.split(separator:" ").map{Int($0)!} let a = ab[0] let b = ab[1] G[a-1].append(b-1) G[b-1].append(a-1) } // 必要な変数の初期化 var plus:[Int] = [] for _ in 0..<n{ plus.append(0) } // xiもリストの形でまとめて値を持っておく for _ in 0..<q{ let qx = readLine()!.split(separator:" ").map{Int($0)!} let q = qx[0] let x = qx[1] plus[q-1] += x } // 必要な変数の初期化 var ans:[Int] = [] var check:[Int] = [] var visited:[Bool] = [] for _ in 0..<n{ ans.append(0) check.append(0) visited.append(false) } // dfs dfs(graph:&G,start:0,plus:&plus,ans:&ans,visited:&visited,num:0) // 文字列のリストに変換 var answer:[String] = ans.map{String($0)} // リストを結合して一つの文字列にして出力 print(answer.joined(separator: " "))
Submission Info
Submission Time | |
---|---|
Task | D - Ki |
User | tardigrade |
Language | Swift (5.2.1) |
Score | 400 |
Code Size | 2197 Byte |
Status | AC |
Exec Time | 1199 ms |
Memory | 59604 KiB |
Judge Result
Set Name | Sample | All | after_contest | ||||||
---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 400 / 400 | 0 / 0 | ||||||
Status |
|
|
|
Set Name | Test Cases |
---|---|
Sample | a01, a02 |
All | a01, a02, b03, b04, b05, b06, b07, b08, b09, b10, b11, b12, b13, b14 |
after_contest | after_contest_15, after_contest_16, after_contest_17 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
a01 | AC | 64 ms | 13208 KiB |
a02 | AC | 11 ms | 13040 KiB |
after_contest_15 | AC | 10 ms | 13508 KiB |
after_contest_16 | AC | 1155 ms | 59096 KiB |
after_contest_17 | AC | 1138 ms | 38056 KiB |
b03 | AC | 14 ms | 13356 KiB |
b04 | AC | 1164 ms | 59604 KiB |
b05 | AC | 1063 ms | 59300 KiB |
b06 | AC | 943 ms | 36632 KiB |
b07 | AC | 826 ms | 39040 KiB |
b08 | AC | 1133 ms | 49632 KiB |
b09 | AC | 1104 ms | 37024 KiB |
b10 | AC | 1157 ms | 52236 KiB |
b11 | AC | 1144 ms | 47452 KiB |
b12 | AC | 1168 ms | 44916 KiB |
b13 | AC | 1199 ms | 56648 KiB |
b14 | AC | 953 ms | 36796 KiB |