60pts求助!!
查看原帖
60pts求助!!
31005
nnnnakosuki楼主2023/9/16 17:09
#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>

using namespace std;

const int N = 100010;

int n,m;
bool st[N];
vector<int> h[N];

queue<int> q;

void dfs(int u)
{
    printf("%d ",u);
    st[u] = true;
    for(int i = 0;i < h[u].size();i ++ )
    {
        int j = h[u][i];
        if(!st[j]) dfs(j);
    }
}

void bfs()
{
    q.push(1);
    printf("%d ",1);
    st[1] = true;
    
    while(q.size())
    {
        int t = q.front();
        q.pop();
        
        for(int i = 0;i < h[t].size();i ++ )
        {
            int j = h[t][i];
            if(!st[j])
            {
                st[j] = true;
                printf("%d ",j);
                q.push(j);
            }
        }
    }
}

int main()
{
    scanf("%d%d",&n,&m);
    while(m -- )
    {
        int a,b;
        scanf("%d%d",&a,&b);
        h[a].push_back(b);
    }
    for(int i = 0;i < n;i ++ ) sort(h[i].begin(),h[i].end());

    dfs(1);
    
    printf("\n");
    
    memset(st,false,sizeof st);
    
    bfs();
    
    return 0;
}
2023/9/16 17:09
加载中...