1 条题解

  • 0
    @ 2025-6-22 15:29:56
    #include <bits/stdc++.h>
    using namespace std;
    const int MAXN = 100000;
    const int MAXM = 1000000;
    int n, m;
    vector<int> e[MAXN + 5];
    bool vis[MAXN + 5];
    void dfs(int u)
    {
        cout << u << " ";
        vis[u] = true;
        for (int v : e[u])
        {
            if (!vis[v])
                dfs(v);
        }
    }
    queue<int> q;
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        cin >> n >> m;
        for (int i = 1; i <= m; i++)
        {
            int u, v;
            cin >> u >> v;
            e[u].push_back(v);
        }
        for (int i = 1; i <= n; i++)
            sort(e[i].begin(), e[i].end());
        // DFS
        for (int i = 1; i <= n; i++)
            vis[i] = false;
        dfs(1);
        cout << "\n";
        // BFS
        for (int i = 1; i <= n; i++)
            vis[i] = false;
        vis[1] = true;
        q.push(1);
        while (!q.empty())
        {
            int u = q.front();
            q.pop();
            cout << u << " ";
            for (int i = 0; i < e[u].size(); i++)
            {
                int v = e[u][i];
                if (!vis[v])
                {
                    vis[v] = true;
                    q.push(v);
                }
            }
        }
        return 0;
    }
    

    信息

    ID
    6491
    时间
    1000ms
    内存
    125MiB
    难度
    2
    标签
    递交数
    9
    已通过
    3
    上传者