island_num = gets.to_i bridge_num = island_num - 1 island_with_bridge = (0...island_num).inject({}) { |result, i| result[i] = 0; result } bridge_num.times do islands = gets.split island_with_bridge[islands[0].to_i] += 1 island_with_bridge[islands[1].to_i] += 1 end if !island_with_bridge.values.find { |v| v == 0 } # すべての島が繋がっている場合はどの橋が破壊されても繋ぎ直せる puts "Bob" return end if island_with_bridge.values.count { |v| v == 0 } >= 2 || island_with_bridge.values.find { |v| v == 1 } # 一つも橋が架かっていない島が2つ以上ある場合は、一つしか橋を架けられないため繋ぎ直せない # 一つしか橋が架かっていない島の橋を破壊されると、一つもかかっていない島の分を繋げないため繋ぎ直せない puts "Alice" else puts "Bob" end