結果
問題 | No.1817 Reversed Edges |
ユーザー |
![]() |
提出日時 | 2022-01-21 22:43:01 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 724 ms / 2,000 ms |
コード長 | 1,319 bytes |
コンパイル時間 | 2,266 ms |
コンパイル使用メモリ | 78,828 KB |
実行使用メモリ | 71,308 KB |
最終ジャッジ日時 | 2024-11-26 01:49:02 |
合計ジャッジ時間 | 13,975 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 23 |
ソースコード
import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;import java.util.ArrayList;import java.util.List;public class Main {static int n;static List<List<Integer>> list;static int[] ans;public static void main(String[] args) throws Exception {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String[] sa = br.readLine().split(" ");n = Integer.parseInt(sa[0]);list = new ArrayList<>(n);for (int i = 0; i < n; i++) {list.add(new ArrayList<>());}for (int i = 0; i < n - 1; i++) {sa = br.readLine().split(" ");int a = Integer.parseInt(sa[0]) - 1;int b = Integer.parseInt(sa[1]) - 1;list.get(a).add(b);list.get(b).add(a);}br.close();ans = new int[n];ans[0] = dfs(0, -1);dfs2(0, -1);PrintWriter pw = new PrintWriter(System.out);for (int i : ans) {pw.println(i);}pw.flush();}static int dfs(int x, int p) {int ret = 0;for (int i : list.get(x)) {if (i != p) {if (x > i) {ret++;}int res = dfs(i, x);ret += res;}}return ret;}static void dfs2(int x, int p) {for (int i : list.get(x)) {if (i != p) {if (x < i) {ans[i] = ans[x] + 1;} else {ans[i] = ans[x] - 1;}dfs2(i, x);}}}}