Submission #8635497


Source Code Expand

// Practice AtCoder
// author: Leonardone @ NEETSDKASU

fn main() {
    let mut stdin = String::new();
    std::io::Read::read_to_string(&mut std::io::stdin(), &mut stdin).unwrap();
    let mut stdin = stdin.split_whitespace();
    let mut get = || stdin.next().unwrap();
    macro_rules! get {
        ($t:ty) => (get().parse::<$t>().unwrap());
        () => (get!(i64));
    }
    
    let n = get!(usize);
    let mut tree = vec![vec![]; n+1];
    let mut f = 0;
    for i in 0..n-1 {
        let a = get!(usize);
        let b = get!(usize);
        tree[a].push((b, i));
        tree[b].push((a, i));
        f = a;
    }
    let col = tree.iter().map(Vec::len).max().unwrap();
    let mut edg = vec![0; n-1];
    for u in 1..n+1 {
        let mut tmp: Vec<_> = tree[u].iter().map(|&(_,e)| edg[e]).filter(|c|*c>0).collect();
        tmp.sort();
        let mut tc = 1;
        let mut ti = 0;
        for &(v, e) in tree[u].iter() {
            if edg[e] > 0 {
                continue;
            }
            loop {
                if ti >= tmp.len() {
                    edg[e] = tc;
                    tc += 1;
                    break;
                } else if tc < tmp[ti] {
                    edg[e] = tc;
                    tc += 1;
                    break;
                } else if tc == tmp[ti] {
                    tc += 1;
                    ti += 1;
                } else {
                    ti += 1;
                }
            }
        }
    }
    println!("{}", col);
    for &i in edg.iter() {
        println!("{}", i);
    }
}

Submission Info

Submission Time
Task D - Coloring Edges on Tree
User neetsdkasu
Language Rust (1.15.1)
Score 400
Code Size 1625 Byte
Status AC
Exec Time 192 ms
Memory 16764 KiB

Compile Error

warning: variable `f` is assigned to, but never used, #[warn(unused_variables)] on by default
  --> ./Main.rs:16:9
   |
16 |     let mut f = 0;
   |         ^^^^^

warning: value assigned to `f` is never read, #[warn(unused_assignments)] on by default
  --> ./Main.rs:22:9
   |
22 |         f = a;
   |         ^

warning: unused variable: `v`, #[warn(unused_variables)] on by default
  --> ./Main.rs:31:15
   |
31 |         for &(v, e) in tree[u].iter() {
   |               ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 3
AC × 26
Set Name Test Cases
Sample 00-sample-01.txt, 00-sample-02.txt, 00-sample-03.txt
All 00-sample-01.txt, 00-sample-02.txt, 00-sample-03.txt, 11-small-01.txt, 11-small-02.txt, 11-small-03.txt, 11-small-04.txt, 11-small-05.txt, 11-small-06.txt, 11-small-07.txt, 11-small-08.txt, 11-small-09.txt, 11-small-10.txt, 31-large-01.txt, 31-large-02.txt, 31-large-03.txt, 31-large-04.txt, 31-large-05.txt, 41-min-01.txt, 51-max-01.txt, 61-path-01.txt, 61-path-02.txt, 61-path-03.txt, 71-star-01.txt, 71-star-02.txt, 71-star-03.txt
Case Name Status Exec Time Memory
00-sample-01.txt AC 2 ms 4352 KiB
00-sample-02.txt AC 2 ms 4352 KiB
00-sample-03.txt AC 2 ms 4352 KiB
11-small-01.txt AC 2 ms 4352 KiB
11-small-02.txt AC 3 ms 4352 KiB
11-small-03.txt AC 2 ms 4352 KiB
11-small-04.txt AC 3 ms 4352 KiB
11-small-05.txt AC 2 ms 4352 KiB
11-small-06.txt AC 3 ms 4352 KiB
11-small-07.txt AC 2 ms 4352 KiB
11-small-08.txt AC 3 ms 4352 KiB
11-small-09.txt AC 3 ms 4352 KiB
11-small-10.txt AC 2 ms 4352 KiB
31-large-01.txt AC 20 ms 4352 KiB
31-large-02.txt AC 115 ms 10620 KiB
31-large-03.txt AC 43 ms 6396 KiB
31-large-04.txt AC 38 ms 6396 KiB
31-large-05.txt AC 87 ms 8444 KiB
41-min-01.txt AC 2 ms 4352 KiB
51-max-01.txt AC 192 ms 16764 KiB
61-path-01.txt AC 111 ms 10620 KiB
61-path-02.txt AC 29 ms 4352 KiB
61-path-03.txt AC 36 ms 6396 KiB
71-star-01.txt AC 23 ms 4352 KiB
71-star-02.txt AC 136 ms 12796 KiB
71-star-03.txt AC 57 ms 6396 KiB