洛谷 P5318 求助

rt

题目传送门

代码:

#include <bits/stdc++.h>

using namespace std;

int n, m, ans, vis[100005];
vector<int> mp[100005];

struct node
{
    int id, step;
};

queue<node> que;

void dfs(int p)
{
    cout << p << ' ';
    for(int i = 0; i < mp[p].size(); i++)
    {
        if(!vis[mp[p][i]])
        {
            vis[mp[p][i]] = 1;
            dfs(mp[p][i]);
        }
    }
}

void bfs(int s)
{
    vis[s] = 1;
    que.push({s, 0});
    while(que.size())
    {
        node hd = que.front();
        que.pop();
        cout << hd.id << ' ';
        for(int i = 0; i < mp[hd.id].size(); i++)
        {
            if(!vis[mp[hd.id][i]])
            {
                vis[mp[hd.id][i]] = 1;
                que.push({mp[hd.id][i], hd.step + 1});
            }
        }
    }
}

int main()
{
    cin >> n >> m;
    while(m--)
    {
        int x, y;
        scanf("%d %d", &x, &y);
        mp[x].push_back(y);
    }
    for(int i = 1; i <= n; i++)
    {
        sort(mp[i].begin(), mp[i].end());
    }
    dfs(1);
    cout << endl;
    memset(vis, 0, sizeof vis);
    bfs(1);

    return 0;
}

WA 20 求助

5 个赞

没说图一定连通

4 个赞