QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#289747#7860. Graph of Maximum Degree 3ucup-team296#AC ✓945ms129884kbRust22.3kb2023-12-23 22:40:192023-12-23 22:40:20

Judging History

你现在查看的是最新测评结果

  • [2023-12-23 22:40:20]
  • 评测
  • 测评结果:AC
  • 用时:945ms
  • 内存:129884kb
  • [2023-12-23 22:40:19]
  • 提交

answer

pub mod solution {
//{"name":"d","group":"Manual","url":"","interactive":false,"timeLimit":2000,"tests":[{"input":"","output":""},{"input":"","output":""}],"testType":"single","input":{"type":"stdin","fileName":null,"pattern":null},"output":{"type":"stdout","fileName":null,"pattern":null},"languages":{"java":{"taskClass":"d"}}}

use std::collections::HashSet;

use crate::algo_lib::collections::fx_hash_map::FxHashSet;
use crate::algo_lib::io::output::output;
use crate::algo_lib::io::task_io_settings::TaskIoType;
use crate::algo_lib::io::task_runner::run_task;
use crate::algo_lib::io::input::Input;
use crate::algo_lib::io::task_io_settings::TaskIoSettings;
#[allow(unused)]
use crate::dbg;
use crate::out;
use crate::out_line;

fn solve(input: &mut Input, _test_case: usize) {
    let n = input.usize();
    let m = input.usize();
    let mut g = vec![vec![]; n];
    let mut edges = vec![HashSet::new(); 2];
    for _ in 0..m {
        let fr = input.usize() - 1;
        let to = input.usize() - 1;
        let color = input.usize();
        edges[color].insert((fr as i32, to as i32));
        edges[color].insert((to as i32, fr as i32));
        g[fr].push(to);
        g[to].push(fr);
    }
    let mut queue = vec![];
    let mut seen = FxHashSet::default();
    let mut ans = FxHashSet::default();
    for v in 0..n {
        queue.push(vec![v as i32]);
        seen.insert(vec![v as i32]);
        ans.insert(vec![v as i32]);
    }
    while let Some(vertices) = queue.pop() {
        {
            let mut in_blue = vec![];
            let mut in_red = vec![];
            let mut count_blue = 0;
            let mut count_red = 0;
            for &x in &vertices {
                for &y in &vertices {
                    if x == y {
                        break;
                    }
                    if edges[0].contains(&(x, y)) {
                        in_red.push(x);
                        in_red.push(y);
                        count_red += 1;
                    }
                    if edges[1].contains(&(x, y)) {
                        in_blue.push(x);
                        in_blue.push(y);
                        count_blue += 1;
                    }
                }
            }
            in_blue.sort();
            in_red.sort();
            in_blue.dedup();
            in_red.dedup();
            let sz = vertices.len();
            if in_blue.len() == sz
                && in_red.len() == sz
                && count_red >= sz - 1
                && count_blue >= sz - 1
            {
                ans.insert(vertices.clone());
            }
        }
        if vertices.len() < 4 {
            for v in vertices.iter() {
                for &to in g[*v as usize].iter() {
                    if !vertices.contains(&(to as i32)) {
                        let mut new_vertices = vertices.clone();
                        new_vertices.push(to as i32);
                        new_vertices.sort();
                        if seen.insert(new_vertices.clone()) {
                            queue.push(new_vertices.clone());
                            seen.insert(new_vertices);
                        }
                    }
                }
            }
        }
    }
    out_line!(ans.len());
}

pub(crate) fn run(mut input: Input) -> bool {
    solve(&mut input, 1);
    output().flush();
    true
}

#[allow(unused)]
pub fn submit() -> bool {
    let io = TaskIoSettings {
        is_interactive: false,
        input: TaskIoType::Std,
        output: TaskIoType::Std,
    };

    run_task(io, run)
}

}
pub mod algo_lib {
pub mod collections {
pub mod fx_hash_map {
// It is just a little bit modified copy of https://docs.rs/rustc-hash/1.1.0/src/rustc_hash

// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.

//! Fast, non-cryptographic hash used by rustc and Firefox.
//!
//! # Example
//!
//! ```rust
//! # #[cfg(feature = "std")]
//! # fn main() {
//! use rustc_hash::FxHashMap;
//! let mut map: FxHashMap<u32, u32> = FxHashMap::default();
//! map.insert(22, 44);
//! # }
//! # #[cfg(not(feature = "std"))]
//! # fn main() { }
//! ```

use std::convert::TryInto;
use std::collections::HashMap;
use std::collections::HashSet;
use std::hash::BuildHasherDefault;
use std::hash::Hasher;
use std::mem::size_of;
use std::ops::BitXor;

/// Type alias for a hashmap using the `fx` hash algorithm.
pub type FxHashMap<K, V> = HashMap<K, V, BuildHasherDefault<FxHasher>>;

/// Type alias for a hashmap using the `fx` hash algorithm.
pub type FxHashSet<V> = HashSet<V, BuildHasherDefault<FxHasher>>;

/// A speedy hash algorithm for use within rustc. The hashmap in liballoc
/// by default uses SipHash which isn't quite as speedy as we want. In the
/// compiler we're not really worried about DOS attempts, so we use a fast
/// non-cryptographic hash.
///
/// This is the same as the algorithm used by Firefox -- which is a homespun
/// one not based on any widely-known algorithm -- though modified to produce
/// 64-bit hash values instead of 32-bit hash values. It consistently
/// out-performs an FNV-based hash within rustc itself -- the collision rate is
/// similar or slightly worse than FNV, but the speed of the hash function
/// itself is much higher because it works on up to 8 bytes at a time.
#[derive(Default)]
pub struct FxHasher {
    hash: usize,
}

#[cfg(target_pointer_width = "32")]
const K: usize = 0x9e3779b9;
#[cfg(target_pointer_width = "64")]
const K: usize = 0x517cc1b727220a95;

impl FxHasher {
    #[inline]
    fn add_to_hash(&mut self, i: usize) {
        self.hash = self.hash.rotate_left(5).bitxor(i).wrapping_mul(K);
    }
}

impl Hasher for FxHasher {
    #[inline]
    fn write(&mut self, mut bytes: &[u8]) {
        #[cfg(target_pointer_width = "32")]
        let read_usize = |bytes: &[u8]| u32::from_ne_bytes(bytes[..4].try_into().unwrap());
        #[cfg(target_pointer_width = "64")]
        let read_usize = |bytes: &[u8]| u64::from_ne_bytes(bytes[..8].try_into().unwrap());

        let mut hash = FxHasher { hash: self.hash };
        assert!(size_of::<usize>() <= 8);
        while bytes.len() >= size_of::<usize>() {
            hash.add_to_hash(read_usize(bytes) as usize);
            bytes = &bytes[size_of::<usize>()..];
        }
        if (size_of::<usize>() > 4) && (bytes.len() >= 4) {
            hash.add_to_hash(u32::from_ne_bytes(bytes[..4].try_into().unwrap()) as usize);
            bytes = &bytes[4..];
        }
        if (size_of::<usize>() > 2) && bytes.len() >= 2 {
            hash.add_to_hash(u16::from_ne_bytes(bytes[..2].try_into().unwrap()) as usize);
            bytes = &bytes[2..];
        }
        if (size_of::<usize>() > 1) && !bytes.is_empty() {
            hash.add_to_hash(bytes[0] as usize);
        }
        self.hash = hash.hash;
    }

    #[inline]
    fn write_u8(&mut self, i: u8) {
        self.add_to_hash(i as usize);
    }

    #[inline]
    fn write_u16(&mut self, i: u16) {
        self.add_to_hash(i as usize);
    }

    #[inline]
    fn write_u32(&mut self, i: u32) {
        self.add_to_hash(i as usize);
    }

    #[cfg(target_pointer_width = "32")]
    #[inline]
    fn write_u64(&mut self, i: u64) {
        self.add_to_hash(i as usize);
        self.add_to_hash((i >> 32) as usize);
    }

    #[cfg(target_pointer_width = "64")]
    #[inline]
    fn write_u64(&mut self, i: u64) {
        self.add_to_hash(i as usize);
    }

    #[inline]
    fn write_usize(&mut self, i: usize) {
        self.add_to_hash(i);
    }

    #[inline]
    fn finish(&self) -> u64 {
        self.hash as u64
    }
}
}
}
pub mod io {
pub mod input {
use std::fmt::Debug;
use std::io::Read;
use std::marker::PhantomData;
use std::path::Path;
use std::str::FromStr;

pub struct Input {
    input: Box<dyn Read>,
    buf: Vec<u8>,
    at: usize,
    buf_read: usize,
}

macro_rules! read_integer_fun {
    ($t:ident) => {
        #[allow(unused)]
        pub fn $t(&mut self) -> $t {
            self.read_integer()
        }
    };
}

impl Input {
    const DEFAULT_BUF_SIZE: usize = 4096;

    ///
    /// Using with stdin:
    /// ```no_run
    /// use algo_lib::io::input::Input;
    /// let stdin = std::io::stdin();
    /// let input = Input::new(Box::new(stdin));
    /// ```
    ///
    /// For read files use ``new_file`` instead.
    ///
    ///
    pub fn new(input: Box<dyn Read>) -> Self {
        Self {
            input,
            buf: vec![0; Self::DEFAULT_BUF_SIZE],
            at: 0,
            buf_read: 0,
        }
    }

    pub fn new_file<P: AsRef<Path>>(path: P) -> Self {
        let file = std::fs::File::open(&path)
            .unwrap_or_else(|_| panic!("Can't open file: {:?}", path.as_ref().as_os_str()));
        Self::new(Box::new(file))
    }

    pub fn new_with_size(input: Box<dyn Read>, buf_size: usize) -> Self {
        Self {
            input,
            buf: vec![0; buf_size],
            at: 0,
            buf_read: 0,
        }
    }

    pub fn new_file_with_size<P: AsRef<Path>>(path: P, buf_size: usize) -> Self {
        let file = std::fs::File::open(&path)
            .unwrap_or_else(|_| panic!("Can't open file: {:?}", path.as_ref().as_os_str()));
        Self::new_with_size(Box::new(file), buf_size)
    }

    pub fn get(&mut self) -> Option<u8> {
        if self.refill_buffer() {
            let res = self.buf[self.at];
            self.at += 1;
            Some(res)
        } else {
            None
        }
    }

    pub fn peek(&mut self) -> Option<u8> {
        if self.refill_buffer() {
            Some(self.buf[self.at])
        } else {
            None
        }
    }

    pub fn skip_whitespace(&mut self) {
        while let Some(b) = self.peek() {
            if !char::from(b).is_whitespace() {
                return;
            }
            self.get();
        }
    }

    pub fn next_token(&mut self) -> Option<Vec<u8>> {
        self.skip_whitespace();
        let mut res = Vec::new();
        while let Some(c) = self.get() {
            if char::from(c).is_whitespace() {
                break;
            }
            res.push(c);
        }
        if res.is_empty() {
            None
        } else {
            Some(res)
        }
    }

    //noinspection RsSelfConvention
    pub fn is_exhausted(&mut self) -> bool {
        self.peek().is_none()
    }

    pub fn has_more_elements(&mut self) -> bool {
        !self.is_exhausted()
    }

    pub fn read<T: Readable>(&mut self) -> T {
        T::read(self)
    }

    pub fn vec<T: Readable>(&mut self, size: usize) -> Vec<T> {
        let mut res = Vec::with_capacity(size);
        for _ in 0usize..size {
            res.push(self.read());
        }
        res
    }

    pub fn string_vec(&mut self, size: usize) -> Vec<Vec<u8>> {
        let mut res = Vec::with_capacity(size);
        for _ in 0usize..size {
            res.push(self.string());
        }
        res
    }

    pub fn read_line(&mut self) -> String {
        let mut res = String::new();
        while let Some(c) = self.get() {
            if c == b'\n' {
                break;
            }
            if c == b'\r' {
                if self.peek() == Some(b'\n') {
                    self.get();
                }
                break;
            }
            res.push(c.into());
        }
        res
    }

    #[allow(clippy::should_implement_trait)]
    pub fn into_iter<T: Readable>(self) -> InputIterator<T> {
        InputIterator {
            input: self,
            phantom: Default::default(),
        }
    }

    fn read_integer<T: FromStr>(&mut self) -> T
    where
        <T as FromStr>::Err: Debug,
    {
        let res = self.read_string();
        res.parse::<T>().unwrap()
    }

    fn read_string(&mut self) -> String {
        match self.next_token() {
            None => {
                panic!("Input exhausted");
            }
            Some(res) => unsafe { String::from_utf8_unchecked(res) },
        }
    }

    pub fn string_as_string(&mut self) -> String {
        self.read_string()
    }

    pub fn string(&mut self) -> Vec<u8> {
        self.read_string().into_bytes()
    }

    fn read_char(&mut self) -> char {
        self.skip_whitespace();
        self.get().unwrap().into()
    }

    fn read_float(&mut self) -> f64 {
        self.read_string().parse().unwrap()
    }

    pub fn f64(&mut self) -> f64 {
        self.read_float()
    }

    fn refill_buffer(&mut self) -> bool {
        if self.at == self.buf_read {
            self.at = 0;
            self.buf_read = self.input.read(&mut self.buf).unwrap();
            self.buf_read != 0
        } else {
            true
        }
    }

    read_integer_fun!(i32);
    read_integer_fun!(i64);
    read_integer_fun!(i128);
    read_integer_fun!(u32);
    read_integer_fun!(u64);
    read_integer_fun!(usize);
}

pub trait Readable {
    fn read(input: &mut Input) -> Self;
}

impl Readable for String {
    fn read(input: &mut Input) -> Self {
        input.read_string()
    }
}

impl Readable for char {
    fn read(input: &mut Input) -> Self {
        input.read_char()
    }
}

impl Readable for f64 {
    fn read(input: &mut Input) -> Self {
        input.read_string().parse().unwrap()
    }
}

impl Readable for f32 {
    fn read(input: &mut Input) -> Self {
        input.read_string().parse().unwrap()
    }
}

impl<T: Readable> Readable for Vec<T> {
    fn read(input: &mut Input) -> Self {
        let size = input.read();
        input.vec(size)
    }
}

pub struct InputIterator<T: Readable> {
    input: Input,
    phantom: PhantomData<T>,
}

impl<T: Readable> Iterator for InputIterator<T> {
    type Item = T;

    fn next(&mut self) -> Option<Self::Item> {
        self.input.skip_whitespace();
        self.input.peek().map(|_| self.input.read())
    }
}

macro_rules! read_integer {
    ($t:ident) => {
        impl Readable for $t {
            fn read(input: &mut Input) -> Self {
                input.read_integer()
            }
        }
    };
}

read_integer!(i8);
read_integer!(i16);
read_integer!(i32);
read_integer!(i64);
read_integer!(i128);
read_integer!(isize);
read_integer!(u8);
read_integer!(u16);
read_integer!(u32);
read_integer!(u64);
read_integer!(u128);
read_integer!(usize);
}
pub mod output {
use std::io::Write;

pub struct Output {
    output: Box<dyn Write>,
    buf: Vec<u8>,
    at: usize,
    auto_flush: bool,
}

impl Output {
    const DEFAULT_BUF_SIZE: usize = 4096;

    pub fn new(output: Box<dyn Write>) -> Self {
        Self {
            output,
            buf: vec![0; Self::DEFAULT_BUF_SIZE],
            at: 0,
            auto_flush: false,
        }
    }

    pub fn new_with_auto_flush(output: Box<dyn Write>) -> Self {
        Self {
            output,
            buf: vec![0; Self::DEFAULT_BUF_SIZE],
            at: 0,
            auto_flush: true,
        }
    }

    pub fn flush(&mut self) {
        if self.at != 0 {
            self.output.write_all(&self.buf[..self.at]).unwrap();
            self.at = 0;
            self.output.flush().expect("Couldn't flush output");
        }
    }

    pub fn print<T: Writable>(&mut self, s: &T) {
        s.write(self);
    }

    pub fn put(&mut self, b: u8) {
        self.buf[self.at] = b;
        self.at += 1;
        if self.at == self.buf.len() {
            self.flush();
        }
    }

    pub fn maybe_flush(&mut self) {
        if self.auto_flush {
            self.flush();
        }
    }

    pub fn print_per_line<T: Writable>(&mut self, arg: &[T]) {
        for i in arg {
            i.write(self);
            self.put(b'\n');
        }
    }

    pub fn print_iter<T: Writable, I: Iterator<Item = T>>(&mut self, iter: I) {
        let mut first = true;
        for e in iter {
            if first {
                first = false;
            } else {
                self.put(b' ');
            }
            e.write(self);
        }
    }

    pub fn print_iter_ref<'a, T: 'a + Writable, I: Iterator<Item = &'a T>>(&mut self, iter: I) {
        let mut first = true;
        for e in iter {
            if first {
                first = false;
            } else {
                self.put(b' ');
            }
            e.write(self);
        }
    }
}

impl Write for Output {
    fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> {
        let mut start = 0usize;
        let mut rem = buf.len();
        while rem > 0 {
            let len = (self.buf.len() - self.at).min(rem);
            self.buf[self.at..self.at + len].copy_from_slice(&buf[start..start + len]);
            self.at += len;
            if self.at == self.buf.len() {
                self.flush();
            }
            start += len;
            rem -= len;
        }
        if self.auto_flush {
            self.flush();
        }
        Ok(buf.len())
    }

    fn flush(&mut self) -> std::io::Result<()> {
        self.flush();
        Ok(())
    }
}

pub trait Writable {
    fn write(&self, output: &mut Output);
}

impl Writable for &str {
    fn write(&self, output: &mut Output) {
        output.write_all(self.as_bytes()).unwrap();
    }
}

impl Writable for String {
    fn write(&self, output: &mut Output) {
        output.write_all(self.as_bytes()).unwrap();
    }
}

impl Writable for char {
    fn write(&self, output: &mut Output) {
        output.put(*self as u8);
    }
}

impl<T: Writable> Writable for [T] {
    fn write(&self, output: &mut Output) {
        output.print_iter_ref(self.iter());
    }
}

impl<T: Writable> Writable for Vec<T> {
    fn write(&self, output: &mut Output) {
        self[..].write(output);
    }
}

macro_rules! write_to_string {
    ($t:ident) => {
        impl Writable for $t {
            fn write(&self, output: &mut Output) {
                self.to_string().write(output);
            }
        }
    };
}

write_to_string!(u8);
write_to_string!(u16);
write_to_string!(u32);
write_to_string!(u64);
write_to_string!(u128);
write_to_string!(usize);
write_to_string!(i8);
write_to_string!(i16);
write_to_string!(i32);
write_to_string!(i64);
write_to_string!(i128);
write_to_string!(isize);
write_to_string!(f32);
write_to_string!(f64);

impl<T: Writable, U: Writable> Writable for (T, U) {
    fn write(&self, output: &mut Output) {
        self.0.write(output);
        output.put(b' ');
        self.1.write(output);
    }
}

impl<T: Writable, U: Writable, V: Writable> Writable for (T, U, V) {
    fn write(&self, output: &mut Output) {
        self.0.write(output);
        output.put(b' ');
        self.1.write(output);
        output.put(b' ');
        self.2.write(output);
    }
}

pub static mut OUTPUT: Option<Output> = None;

pub fn set_global_output_to_stdout() {
    unsafe {
        OUTPUT = Some(Output::new(Box::new(std::io::stdout())));
    }
}

pub fn set_global_output_to_file(path: &str) {
    unsafe {
        let out_file =
            std::fs::File::create(path).unwrap_or_else(|_| panic!("Can't create file {}", path));
        OUTPUT = Some(Output::new(Box::new(out_file)));
    }
}

pub fn set_global_output_to_none() {
    unsafe {
        match &mut OUTPUT {
            None => {}
            Some(output) => output.flush(),
        }
        OUTPUT = None;
    }
}

pub fn output() -> &'static mut Output {
    unsafe {
        match &mut OUTPUT {
            None => {
                panic!("Global output wasn't initialized");
            }
            Some(output) => output,
        }
    }
}

#[macro_export]
macro_rules! out {
    ($first: expr $(,$args:expr )*) => {
        output().print(&$first);
        $(output().put(b' ');
        output().print(&$args);
        )*
        output().maybe_flush();
    }
}

#[macro_export]
macro_rules! out_line {
    ($first: expr $(, $args:expr )* ) => {
        {
            out!($first $(,$args)*);
            output().put(b'\n');
            output().maybe_flush();
        }
    };
    () => {
        {
            output().put(b'\n');
            output().maybe_flush();
        }
    };
}
}
pub mod task_io_settings {
pub enum TaskIoType {
    Std,
    File(String),
}

pub struct TaskIoSettings {
    pub is_interactive: bool,
    pub input: TaskIoType,
    pub output: TaskIoType,
}
}
pub mod task_runner {
use std::io::Write;

use super::input::Input;
use super::output::Output;
use super::output::OUTPUT;
use super::task_io_settings::TaskIoSettings;
use super::task_io_settings::TaskIoType;

pub fn run_task<Res>(io: TaskIoSettings, run: impl FnOnce(Input) -> Res) -> Res {
    let output: Box<dyn Write> = match io.output {
        TaskIoType::Std => Box::new(std::io::stdout()),
        TaskIoType::File(file) => {
            let out_file = std::fs::File::create(file).unwrap();
            Box::new(out_file)
        }
    };

    unsafe {
        OUTPUT = Some(Output::new(output));
    }

    let input = match io.input {
        TaskIoType::Std => {
            let sin = std::io::stdin();
            Input::new(Box::new(sin))
        }
        TaskIoType::File(file) => Input::new_file(file),
    };

    run(input)
}
}
}
pub mod misc {
pub mod dbg_macro {
#[macro_export]
#[allow(unused_macros)]
macro_rules! dbg {
    ($first_val:expr, $($val:expr),+ $(,)?) => {
        eprint!("[{}:{}] {} = {:?}",
                    file!(), line!(), stringify!($first_val), &$first_val);
        ($(eprint!(", {} = {:?}", stringify!($val), &$val)),+,);
        eprintln!();
    };
    ($first_val:expr) => {
        eprintln!("[{}:{}] {} = {:?}",
                    file!(), line!(), stringify!($first_val), &$first_val)
    };
}
}
}
}
fn main() {
    crate::solution::submit();
}

这程序好像有点Bug,我给组数据试试?

詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 2212kb

input:

3 4
1 2 0
1 3 1
2 3 0
2 3 1

output:

5

result:

ok 1 number(s): "5"

Test #2:

score: 0
Accepted
time: 0ms
memory: 2064kb

input:

4 6
1 2 0
2 3 0
3 4 0
1 4 1
2 4 1
1 3 1

output:

5

result:

ok 1 number(s): "5"

Test #3:

score: 0
Accepted
time: 0ms
memory: 2144kb

input:

20 28
9 6 1
9 6 0
3 8 0
8 4 0
3 8 1
3 4 1
2 13 0
13 1 0
19 1 0
2 1 1
2 19 1
13 19 1
14 15 1
14 15 0
7 12 0
12 17 0
20 17 0
7 17 1
7 20 1
12 20 1
16 18 0
18 10 0
5 10 0
16 10 1
16 5 1
18 5 1
4 6 0
9 11 0

output:

27

result:

ok 1 number(s): "27"

Test #4:

score: 0
Accepted
time: 0ms
memory: 2276kb

input:

100 150
93 23 0
23 81 0
76 81 0
93 81 1
93 76 1
23 76 1
100 65 0
65 56 0
19 56 0
100 56 1
100 19 1
65 19 1
2 98 0
2 98 1
26 63 0
63 90 0
26 63 1
26 90 1
6 11 0
11 67 0
6 11 1
6 67 1
37 89 0
89 64 0
25 64 0
37 64 1
37 25 1
89 25 1
84 10 0
10 29 0
75 29 0
84 29 1
84 75 1
10 75 1
7 70 1
7 70 0
28 92 0
...

output:

141

result:

ok 1 number(s): "141"

Test #5:

score: 0
Accepted
time: 218ms
memory: 54832kb

input:

100000 133680
36843 86625 0
86625 63051 0
35524 63051 0
36843 63051 1
36843 35524 1
86625 35524 1
55797 82715 0
55797 82715 1
70147 35104 0
35104 91732 0
70147 35104 1
70147 91732 1
94917 70395 0
70395 68250 0
24100 68250 0
94917 68250 1
94917 24100 1
70395 24100 1
83033 18450 1
83033 18450 0
34462 ...

output:

144604

result:

ok 1 number(s): "144604"

Test #6:

score: 0
Accepted
time: 216ms
memory: 54672kb

input:

100000 133388
86620 74346 0
74346 19047 0
54911 19047 0
86620 19047 1
86620 54911 1
74346 54911 1
23715 93094 0
93094 91208 0
63189 91208 0
23715 91208 1
23715 63189 1
93094 63189 1
99337 41426 1
99337 41426 0
83742 45546 0
45546 73862 0
83742 45546 1
83742 73862 1
85256 2812 0
2812 59368 0
85918 59...

output:

144348

result:

ok 1 number(s): "144348"

Test #7:

score: 0
Accepted
time: 292ms
memory: 55112kb

input:

100000 150000
86541 24385 0
24385 75745 0
52353 75745 0
86541 75745 1
86541 52353 1
24385 52353 1
89075 78015 0
89075 78015 1
52519 74846 0
74846 12045 0
73265 12045 0
52519 12045 1
52519 73265 1
74846 73265 1
17884 63159 0
63159 47308 0
56073 47308 0
17884 47308 1
17884 56073 1
63159 56073 1
72134 ...

output:

144639

result:

ok 1 number(s): "144639"

Test #8:

score: 0
Accepted
time: 288ms
memory: 54844kb

input:

100000 150000
91951 68612 1
91951 68612 0
18361 92673 0
92673 52678 0
86520 52678 0
18361 52678 1
18361 86520 1
92673 86520 1
58779 2421 0
58779 2421 1
66622 6461 0
6461 96943 0
66622 6461 1
66622 96943 1
27201 480 1
27201 480 0
19082 3895 0
3895 17796 0
3117 17796 0
19082 17796 1
19082 3117 1
3895 ...

output:

144471

result:

ok 1 number(s): "144471"

Test #9:

score: 0
Accepted
time: 308ms
memory: 55044kb

input:

100000 150000
43756 3552 0
3552 90269 0
43756 3552 1
43756 90269 1
11104 36935 1
11104 36935 0
11648 5480 0
5480 45320 0
11648 5480 1
11648 45320 1
19216 85746 0
19216 85746 1
68825 11173 0
11173 43155 0
68825 11173 1
68825 43155 1
27349 75259 0
27349 75259 1
1704 24478 0
24478 5980 0
1704 24478 1
1...

output:

144217

result:

ok 1 number(s): "144217"

Test #10:

score: 0
Accepted
time: 306ms
memory: 54972kb

input:

99999 149998
51151 43399 0
51151 43399 1
45978 28343 0
28343 9008 0
85724 9008 0
45978 9008 1
45978 85724 1
28343 85724 1
79446 12915 0
12915 65925 0
28869 65925 0
79446 65925 1
79446 28869 1
12915 28869 1
82642 95556 0
95556 68817 0
68334 68817 0
82642 68817 1
82642 68334 1
95556 68334 1
61212 7638...

output:

144219

result:

ok 1 number(s): "144219"

Test #11:

score: 0
Accepted
time: 317ms
memory: 54820kb

input:

100000 149999
26736 28785 0
28785 37945 0
26736 28785 1
26736 37945 1
1240 74368 0
74368 45022 0
1240 74368 1
1240 45022 1
40673 1276 0
1276 56395 0
40673 1276 1
40673 56395 1
35181 63341 0
63341 35131 0
60120 35131 0
35181 35131 1
35181 60120 1
63341 60120 1
99363 36973 0
99363 36973 1
85717 77683 ...

output:

144380

result:

ok 1 number(s): "144380"

Test #12:

score: 0
Accepted
time: 306ms
memory: 54868kb

input:

100000 150000
63695 11044 0
11044 34978 0
56531 34978 0
63695 34978 1
63695 56531 1
11044 56531 1
72139 3715 0
3715 21024 0
96696 21024 0
72139 21024 1
72139 96696 1
3715 96696 1
54670 49014 0
54670 49014 1
7670 61055 0
61055 38409 0
7670 61055 1
7670 38409 1
83399 50676 0
50676 98893 0
60069 98893 ...

output:

144559

result:

ok 1 number(s): "144559"

Test #13:

score: 0
Accepted
time: 0ms
memory: 2004kb

input:

1 0

output:

1

result:

ok 1 number(s): "1"

Test #14:

score: 0
Accepted
time: 16ms
memory: 22444kb

input:

100000 0

output:

100000

result:

ok 1 number(s): "100000"

Test #15:

score: 0
Accepted
time: 286ms
memory: 54992kb

input:

100000 150000
95066 31960 0
31960 89758 0
10935 89758 0
95066 89758 1
95066 10935 1
31960 10935 1
48016 97823 0
97823 10871 0
23454 10871 0
48016 10871 1
48016 23454 1
97823 23454 1
73749 35525 0
35525 54232 0
42182 54232 0
73749 54232 1
73749 42182 1
35525 42182 1
75405 71341 0
71341 70032 0
3284 7...

output:

125000

result:

ok 1 number(s): "125000"

Test #16:

score: 0
Accepted
time: 0ms
memory: 2096kb

input:

4 6
1 2 0
1 2 1
1 3 0
2 4 1
3 4 0
3 4 1

output:

7

result:

ok 1 number(s): "7"

Test #17:

score: 0
Accepted
time: 304ms
memory: 75292kb

input:

99998 115940
40840 40839 0
28249 28248 0
24785 24783 0
36536 36534 1
71904 71901 1
62023 62021 0
34737 34740 1
18430 18434 0
27506 27505 1
4665 4664 1
36578 36577 1
99311 99314 1
43484 43482 0
26457 26459 1
99698 99695 0
10170 10172 1
98176 98179 1
47786 47785 1
56529 56531 1
86896 86895 1
78204 782...

output:

104913

result:

ok 1 number(s): "104913"

Test #18:

score: 0
Accepted
time: 390ms
memory: 75812kb

input:

99996 126880
57665 57662 0
73031 73028 0
78744 78741 1
36913 36914 0
88139 88138 1
89276 89278 0
66433 66436 1
91069 91070 0
63929 63930 0
89625 89627 0
56400 56399 1
69226 69223 1
88433 88432 1
43807 43810 0
37146 37145 0
43789 43792 1
68123 68124 1
17957 17954 1
82804 82805 0
59808 59804 1
73840 7...

output:

103597

result:

ok 1 number(s): "103597"

Test #19:

score: 0
Accepted
time: 350ms
memory: 75580kb

input:

99996 128661
40089 40092 1
43861 43862 1
75629 75628 0
19597 19598 0
15151 15154 0
95642 95641 0
80320 80317 1
57255 57254 0
35316 35314 0
44675 44676 1
38847 38850 0
50886 50883 1
7617 7615 0
52310 52311 0
71474 71478 1
60036 60035 1
12009 12012 1
72347 72348 1
80343 80345 0
58804 58806 1
11386 113...

output:

103531

result:

ok 1 number(s): "103531"

Test #20:

score: 0
Accepted
time: 266ms
memory: 46156kb

input:

85086 109171
68997 68998 1
24077 24074 0
81830 81829 0
6102 6100 0
16851 16850 0
44103 44101 0
35639 35637 0
46162 46161 1
70373 70372 1
2625 2624 0
50990 50989 0
52220 52219 1
3452 3453 0
21915 21916 0
19561 19564 1
2616 2615 1
59039 59040 1
72589 72590 1
40147 40148 0
83359 83360 1
4274 4275 1
736...

output:

96534

result:

ok 1 number(s): "96534"

Test #21:

score: 0
Accepted
time: 0ms
memory: 2320kb

input:

6 9
1 2 0
1 2 1
1 3 0
2 3 1
3 4 0
4 5 0
4 6 1
5 6 0
5 6 1

output:

10

result:

ok 1 number(s): "10"

Test #22:

score: 0
Accepted
time: 390ms
memory: 76300kb

input:

99998 115940
91307 35051 0
41850 19274 0
35587 78894 0
26695 91651 1
79179 482 1
26680 7283 0
51999 18100 1
97541 51977 0
31565 24059 1
48770 33590 1
79885 37272 1
16578 79254 1
23825 66223 0
51722 3968 1
30481 33229 0
86577 14556 1
63261 87530 1
17567 19857 1
48438 12110 1
68610 47458 1
88373 92315...

output:

104913

result:

ok 1 number(s): "104913"

Test #23:

score: 0
Accepted
time: 458ms
memory: 76868kb

input:

99996 126880
31926 32431 0
89751 77638 0
81312 90949 1
9164 78061 0
79960 37357 1
15044 53165 0
46804 58840 1
96661 32396 0
93436 39774 0
81650 97489 0
28285 25380 1
51642 75847 1
38686 99309 1
65477 46389 0
17012 64436 0
39535 20467 1
55466 34797 1
56580 52438 1
88447 46598 0
94878 81598 1
36359 71...

output:

103597

result:

ok 1 number(s): "103597"

Test #24:

score: 0
Accepted
time: 448ms
memory: 76924kb

input:

99996 128661
68631 18634 1
39185 98747 1
93688 3993 0
63831 49896 0
88466 11249 0
76247 13150 0
44166 89827 1
14706 98796 0
55609 32463 0
96040 11481 1
15800 28436 0
35644 61568 1
90823 7941 0
16497 32517 0
70520 2507 1
36824 37963 1
43899 12185 1
16439 35062 1
22697 5663 0
22986 20940 1
93694 62377...

output:

103531

result:

ok 1 number(s): "103531"

Test #25:

score: 0
Accepted
time: 321ms
memory: 46836kb

input:

85086 109171
54967 52668 1
64243 48915 0
78737 27043 0
69272 84477 0
11191 72192 0
56490 36228 0
52083 25417 0
58946 51014 1
57855 26735 1
83625 46445 0
72878 43133 0
77230 69968 1
7791 38318 0
14928 27213 0
5215 50302 1
75864 25928 1
11582 54867 1
53793 83950 1
70191 16278 0
69499 3665 1
45931 3663...

output:

96534

result:

ok 1 number(s): "96534"

Test #26:

score: 0
Accepted
time: 335ms
memory: 53736kb

input:

100000 150000
99933 55358 0
90416 2554 0
64997 12630 0
43499 35304 0
43164 38359 0
82333 47941 0
15092 76350 1
6401 82373 0
90467 57736 1
72290 58218 0
64844 79192 0
71055 40232 1
54743 65698 0
19204 38062 1
1490 24882 0
18848 1970 1
18829 25405 0
93396 54676 1
5241 60149 0
26699 39910 1
70898 82827...

output:

150000

result:

ok 1 number(s): "150000"

Test #27:

score: 0
Accepted
time: 304ms
memory: 51988kb

input:

100000 130000
15237 21286 1
60817 70086 1
62915 43855 1
23616 97040 1
54175 84281 1
22498 80217 1
58904 98534 0
88649 79847 0
46299 28927 1
90160 25868 1
59368 62900 1
93860 42461 1
2630 7547 1
54787 84637 1
6577 95373 1
62108 8000 1
14358 53523 1
85474 77621 1
68271 30113 1
26333 71197 1
78110 6040...

output:

130000

result:

ok 1 number(s): "130000"

Test #28:

score: 0
Accepted
time: 409ms
memory: 70588kb

input:

65534 98300
42421 54323 0
45888 19783 0
11682 46414 0
41620 27016 0
62650 43400 1
24787 17246 0
38437 37760 0
51438 27810 0
5194 36179 0
42153 44739 0
38012 47581 0
64561 26437 0
30761 19033 0
29631 18563 0
10689 6913 0
9438 48319 0
18569 39847 0
21454 526 0
59916 36345 0
2577 7295 0
22843 14281 0
4...

output:

81918

result:

ok 1 number(s): "81918"

Test #29:

score: 0
Accepted
time: 406ms
memory: 70024kb

input:

65534 98300
44683 25158 1
35394 27103 0
11618 63123 1
26627 62829 1
63124 18531 1
38195 27395 0
30743 3378 1
52310 58855 0
59905 3467 0
60227 44700 0
4466 13169 0
11289 35510 1
45259 23426 1
55348 47991 1
48231 26070 1
48525 16062 1
57931 14114 1
27522 12180 0
12757 20313 1
42080 63292 0
26595 51845...

output:

81918

result:

ok 1 number(s): "81918"

Test #30:

score: 0
Accepted
time: 432ms
memory: 70584kb

input:

65534 98300
13270 32154 0
55961 42311 1
28791 53182 1
59289 50275 1
8038 50111 1
26166 35350 1
11126 60403 1
39908 858 0
59214 30194 1
35679 36357 1
3720 42580 1
24721 42253 1
39094 30603 1
6697 51066 0
3419 63371 1
64362 40934 1
51257 14082 1
63044 59478 1
20968 167 1
30514 42744 1
41849 32144 1
16...

output:

81918

result:

ok 1 number(s): "81918"

Test #31:

score: 0
Accepted
time: 328ms
memory: 53048kb

input:

100000 98302
61966 27142 0
53993 68970 0
34298 58099 1
63874 66725 0
14229 34649 0
2188 81478 0
11724 47884 0
19350 71019 0
61938 51579 0
35352 84486 0
84906 82998 0
14543 39824 0
48746 90624 0
40191 40994 1
47705 23039 0
62784 79792 0
15245 88212 0
92737 95500 0
94811 43930 1
69757 74299 0
53560 49...

output:

116384

result:

ok 1 number(s): "116384"

Test #32:

score: 0
Accepted
time: 339ms
memory: 50920kb

input:

100000 98302
63951 83046 0
49356 1318 1
76776 11042 0
10897 51960 0
91740 36201 1
79579 70160 0
48233 7988 1
77589 73526 0
64917 41777 1
25721 24712 1
40519 61024 0
44493 67177 0
33335 24084 0
3709 42347 0
79762 84853 0
19590 61141 0
77360 58976 0
72886 44054 0
26544 51830 0
5866 45365 0
76622 26661...

output:

124574

result:

ok 1 number(s): "124574"

Test #33:

score: 0
Accepted
time: 324ms
memory: 53256kb

input:

100000 98302
88683 65853 1
85733 28420 1
76008 55360 1
49391 24933 1
87657 14404 1
90800 58622 1
75122 69522 1
22879 73168 1
9291 55797 0
50874 91259 1
86132 9922 1
39521 5711 1
75332 50647 1
14679 89034 1
15252 65542 1
26783 18217 1
11499 26206 1
10487 12140 1
69139 5819 1
62356 90026 1
82272 78670...

output:

116384

result:

ok 1 number(s): "116384"

Test #34:

score: 0
Accepted
time: 778ms
memory: 129252kb

input:

96000 144000
69465 78015 0
70940 79248 0
21267 22945 0
42324 69262 0
92079 61298 0
14312 89231 0
76879 64390 0
9515 87921 0
72921 56907 0
77360 7365 0
5845 31109 0
50706 19916 0
29274 5084 0
27393 91084 0
89690 81434 0
81818 17371 0
59817 87334 0
40802 63933 0
34255 67445 0
84919 73480 0
6355 64057 ...

output:

96000

result:

ok 1 number(s): "96000"

Test #35:

score: 0
Accepted
time: 940ms
memory: 129532kb

input:

98000 147000
64116 52839 0
58466 64469 1
68501 33965 1
35430 29683 1
18936 7790 1
11024 87600 0
87090 27191 1
3526 40531 1
8967 64385 0
74728 9321 1
14888 6420 0
27780 41446 0
56978 5452 0
13425 79329 1
87611 32959 0
3067 17931 0
22989 82933 1
24468 5242 0
47124 59392 1
79914 93411 1
87124 90315 1
7...

output:

98000

result:

ok 1 number(s): "98000"

Test #36:

score: 0
Accepted
time: 814ms
memory: 129884kb

input:

100000 150000
56602 2395 1
82739 49727 1
27928 35973 1
98253 71027 1
35442 98024 1
18060 72579 1
86277 73382 1
47014 51013 1
65310 17335 1
54892 30774 1
77960 822 1
47490 41910 1
62706 85890 1
71056 13146 1
34092 33865 1
58748 46635 1
21972 37259 1
51199 31504 1
43608 87941 1
90790 42330 1
50214 189...

output:

100000

result:

ok 1 number(s): "100000"

Test #37:

score: 0
Accepted
time: 760ms
memory: 129148kb

input:

95000 142500
89254 6524 0
87399 92742 0
50117 8349 0
76363 58825 0
52190 83971 0
6795 20007 0
79651 49566 0
10970 79953 0
11980 53524 0
7467 38087 0
32096 9083 0
17827 38927 0
79988 23057 0
17001 32129 0
56030 42010 0
77569 59418 0
70155 41087 0
27648 77230 0
21167 61067 0
56132 86455 0
80647 19119 ...

output:

95000

result:

ok 1 number(s): "95000"

Test #38:

score: 0
Accepted
time: 945ms
memory: 129304kb

input:

97000 145500
94330 53090 1
74854 79436 0
31002 6670 1
20802 11748 0
23526 78897 0
2600 84830 0
19572 95411 1
87783 55713 0
20454 22602 1
30751 12787 0
67094 60165 0
9477 19434 1
91443 58645 0
49984 1623 0
44709 41427 0
1043 24331 1
79185 42581 0
25102 27915 0
67200 90145 1
25416 40396 1
35961 3087 0...

output:

97000

result:

ok 1 number(s): "97000"

Test #39:

score: 0
Accepted
time: 800ms
memory: 129708kb

input:

99000 148500
63457 58943 1
22274 81761 1
72574 63452 1
67950 79564 1
42979 37610 1
30695 97830 1
33234 77173 1
84106 7156 1
40075 39589 1
41001 66646 1
68993 48814 1
19560 49612 1
80409 70249 1
5995 75043 1
78335 53789 1
87696 94760 1
32934 22366 1
64938 22623 1
49846 19013 1
96854 6968 1
6539 63262...

output:

99000

result:

ok 1 number(s): "99000"

Extra Test:

score: 0
Extra Test Passed