blog.bouzuya.net

2023-03-06 ABC292 の A, B, C, D, E を解いた

ABC292 : AtCoder Beginner Contest 292 の A, B, C, D, E を解いた。

use std::collections::VecDeque;

use proconio::{input, marker::Usize1};

fn main() {
    input! {
        n: usize,
        m: usize,
        uv: [(Usize1, Usize1); m],
    };
    let mut edges = vec![vec![]; n];
    for (u, v) in uv {
        edges[u].push(v);
    }

    let mut all = 0_usize;
    for start in 0..n {
        let mut used = vec![false; n];
        used[start] = true;
        let mut count = 0_usize;
        let mut deque = edges[start].iter().copied().collect::<VecDeque<usize>>();
        while let Some(u) = deque.pop_front() {
            if used[u] {
                continue;
            }
            used[u] = true;
            count += 1;
            for v in edges[u].iter().copied() {
                deque.push_back(v);
            }
        }
        all += count;
    }

    let ans = all - m;
    println!("{}", ans);
}

NIP-05 https://github.com/nostr-protocol/nips/blob/master/05.md に基づいて User Discovery する CLI を書いた。 bouzuya/nostr-user-discovery に置いている。明日すこし調整して改めて書く。


『 TypeScriptで学ぶ「Domain Modeling Made Functional」 』 https://architect-club.connpass.com/event/276712/ に参加した。


今日のコミット。