結果
問題 | No.977 アリス仕掛けの摩天楼 |
ユーザー |
![]() |
提出日時 | 2020-01-31 22:10:14 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 1,020 ms / 2,000 ms |
コード長 | 1,440 bytes |
コンパイル時間 | 2,361 ms |
コンパイル使用メモリ | 79,532 KB |
実行使用メモリ | 83,516 KB |
最終ジャッジ日時 | 2024-09-17 08:27:00 |
合計ジャッジ時間 | 12,520 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 26 |
ソースコード
import java.util.Scanner; import java.util.ArrayList; import java.util.ArrayDeque; public class Main { public static void main(String[] args) { new Main(); } public Main() { try (Scanner sc = new Scanner(System.in)) { int N = sc.nextInt(); ArrayList<ArrayList<Integer>> graph = new ArrayList<>(); for (int i = 0;i < N;++ i) graph.add(new ArrayList<>()); int check = 0; for (int i = 1;i < N;++ i) { int u = sc.nextInt(), v = sc.nextInt(); check = u; graph.get(u).add(v); graph.get(v).add(u); } ArrayDeque<Integer> bfs = new ArrayDeque<>(); boolean[] reach = new boolean[N]; bfs.addLast(check); reach[check] = true; int count = 1; while(!bfs.isEmpty()) { int tmp = bfs.removeFirst(); for (int i : graph.get(tmp)) { if (!reach[i]) { reach[i] = true; bfs.addLast(i); ++ count; } } } boolean cycleCheck = true; for (int i = 0;i < N;++ i) cycleCheck &= !reach[i] || graph.get(i).size() == 2; if (cycleCheck) ++ count; System.out.println(count < N ? "Alice" : "Bob"); } } }