Submission #59394583


Source Code Expand

use proconio::input;

pub fn main() {
    input! {
        n: usize,
        uv: [(usize, usize); n - 1],
    };

    let mut adj = vec![Vec::new(); n + 1];
    let mut degrees = vec![0; n + 1];

    for (u, v) in uv {
        adj[u].push(v);
        adj[v].push(u);
        degrees[u] += 1;
        degrees[v] += 1;
    }

    let mut visited = vec![false; n + 1];
    let mut total_pairs = 0u64;

    for node in 1..=n {
        if degrees[node] == 3 && !visited[node] {
            let mut stack = Vec::new();
            stack.push(node);
            visited[node] = true;

            let mut degree_3_nodes = Vec::new();
            degree_3_nodes.push(node);

            let mut degree_2_nodes = Vec::new();

            while let Some(u) = stack.pop() {
                for &v in &adj[u] {
                    if degrees[v] == 3 && !visited[v] {
                        visited[v] = true;
                        stack.push(v);
                        degree_3_nodes.push(v);
                    }
                }
            }

            for &u in &degree_3_nodes {
                for &v in &adj[u] {
                    if degrees[v] == 2 {
                        degree_2_nodes.push(v);
                    }
                }
            }

            let k = degree_2_nodes.len();
            if k >= 2 {
                total_pairs += (k * (k - 1) / 2) as u64;
            }
        }
    }

    println!("{}", total_pairs);
}

Submission Info

Submission Time
Task F - Add One Edge 2
User macaroon
Language Rust (rustc 1.70.0)
Score 500
Code Size 1508 Byte
Status AC
Exec Time 38 ms
Memory 22748 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 500 / 500
Status
AC × 3
AC × 39
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, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt, 01_test_25.txt, 01_test_26.txt, 01_test_27.txt, 01_test_28.txt, 01_test_29.txt, 01_test_30.txt, 01_test_31.txt, 01_test_32.txt, 01_test_33.txt, 01_test_34.txt, 01_test_35.txt, 02_hand_01.txt
Case Name Status Exec Time Memory
00_sample_01.txt AC 1 ms 1932 KiB
00_sample_02.txt AC 1 ms 1964 KiB
00_sample_03.txt AC 0 ms 1940 KiB
01_test_01.txt AC 38 ms 22256 KiB
01_test_02.txt AC 38 ms 22188 KiB
01_test_03.txt AC 38 ms 22108 KiB
01_test_04.txt AC 38 ms 22064 KiB
01_test_05.txt AC 38 ms 22240 KiB
01_test_06.txt AC 38 ms 22200 KiB
01_test_07.txt AC 38 ms 22188 KiB
01_test_08.txt AC 38 ms 22200 KiB
01_test_09.txt AC 38 ms 22156 KiB
01_test_10.txt AC 38 ms 22172 KiB
01_test_11.txt AC 38 ms 22048 KiB
01_test_12.txt AC 38 ms 22220 KiB
01_test_13.txt AC 38 ms 22132 KiB
01_test_14.txt AC 37 ms 22216 KiB
01_test_15.txt AC 38 ms 22048 KiB
01_test_16.txt AC 5 ms 4904 KiB
01_test_17.txt AC 32 ms 19052 KiB
01_test_18.txt AC 7 ms 6196 KiB
01_test_19.txt AC 17 ms 11772 KiB
01_test_20.txt AC 11 ms 8328 KiB
01_test_21.txt AC 23 ms 22200 KiB
01_test_22.txt AC 23 ms 22080 KiB
01_test_23.txt AC 23 ms 22120 KiB
01_test_24.txt AC 22 ms 22192 KiB
01_test_25.txt AC 23 ms 21988 KiB
01_test_26.txt AC 35 ms 22696 KiB
01_test_27.txt AC 34 ms 22676 KiB
01_test_28.txt AC 35 ms 22648 KiB
01_test_29.txt AC 35 ms 22632 KiB
01_test_30.txt AC 34 ms 22740 KiB
01_test_31.txt AC 37 ms 22656 KiB
01_test_32.txt AC 36 ms 22728 KiB
01_test_33.txt AC 36 ms 22740 KiB
01_test_34.txt AC 38 ms 22700 KiB
01_test_35.txt AC 37 ms 22748 KiB
02_hand_01.txt AC 21 ms 22128 KiB