AtCoder · abc454_c

Straw Millionaire

This C++ solution uses graph traversal for AtCoder abc454_c Straw Millionaire. Read the reasoning, inspect the code, or try your own test case below.

abc454_cGraphs & treesGraph traversalC++31 lines
Solution202of 248
Open official problem ↗ Download C++ file ↓ Search the library → Open full Code Lab ↗ Report an issue ↗

Approach

Graph traversal

Straw Millionaire matches directed item exchanges and asks for the number of item types reachable from item 1.

Graphs & trees

Problem and code

Useful links.

Written by benbenyaojifen. Try the problem first, then compare your approach with the code.

Open official problem ↗View exact source file ↗
Implementation

C_Straw_Millionaire.cpp

C++

    #include <bits/stdc++.h>
    using namespace std;
    using ll = long long;
    using i128 = __int128;
    const int inf = 1e9;
    const ll INF = 2e18; //❄️
    int main() {
        ios::sync_with_stdio(0); cin.tie(0); 
        int n, m; cin >> n >> m;
        vector<vector<int>> adj(n + 1);
        for (int i = 0; i < m; i++) {
            int u, v; cin >> u >> v;
            adj[u].push_back(v);
        }
        int cnt = 0;
        vector<int> vis(n + 1);
        auto dfs = [&](auto &&self, int x) -> void {
            if (vis[x]) return;
            vis[x] = 1;
            for (int v : adj[x]) {
                self(self, v);
            }
            return;
        };
        dfs(dfs, 1);
        for (int i = 1; i < vis.size(); i++) {
            if (vis[i]) cnt++;
        }
        cout << cnt << '\n';
        return 0;
    }
        

Did this explanation save you time? I'm a Grade 11 student building this free library to make difficult algorithms easier to understand.

Buy me a coffee ↗Keep studying →

Test this problem

Run your code here.

Paste your code, run a test case, compare the output, or trace selected values.

Full trace, comparison & stress testing ↗
StatusReady
Output
No run yet.
Diagnostics
No diagnostics yet.

Each run is isolated and has strict limits. Passing one test does not guarantee the judge will accept the solution.