1 条题解

  • 0
    @ 2026-11-1 19:56:01

    [蓝桥杯青少年组省赛 2022] 路线(Scenic Routes) 题解

    思路分析

    所有路线均为无向无权边,求 1∼N−11 \sim N-1 每个景点到 NN 号景点的最少路线数,只需反向以 NN 号景点为起点做一次广度优先搜索(BFS),求出 NN 到所有点的最短距离 dist[1..N-1](不可达处保持初值 -1),按编号顺序输出即可。时间复杂度 O(N+M)O(N + M)。

    参考代码

    #include <iostream>
    #include <queue>
    #include <vector>
    using namespace std;
    
    vector<int> adj[105];
    int distArr[105];
    
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        int n, m;
        if (!(cin >> n >> m)) return 0;
        for (int i = 0; i < m; ++i)
        {
            int u, v;
            cin >> u >> v;
            adj[u].push_back(v);
            adj[v].push_back(u);
        }
        for (int i = 1; i <= n; ++i) distArr[i] = -1;
        queue<int> q;
        distArr[n] = 0;
        q.push(n);
        while (!q.empty())
        {
            int u = q.front();
            q.pop();
            for (int v : adj[u])
            {
                if (distArr[v] == -1)
                {
                    distArr[v] = distArr[u] + 1;
                    q.push(v);
                }
            }
        }
        for (int i = 1; i < n; ++i)
        {
            if (i > 1) cout << " ";
            cout << distArr[i];
        }
        cout << "\n";
        return 0;
    }
    
    • 1

    [蓝桥杯青少年组省赛 2022] 路线(Scenic Routes)

    信息

    ID
    8551
    时间
    1000ms
    内存
    512MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者