求助
查看原帖
求助
369561
ArktischeKatze楼主2022/1/10 21:48

20分,RE掉四个

#include<bits/stdc++.h>
using namespace std;
int num,head[1000005];
bool f[1000005];
struct int_que
{
    int ver_q;
    int next_q;
};
int_que q[1000005];
int bfs_que[1000005],tail=1,bfs_num=0;
void dfs(int);
void bfs(int);
void add(int from,int to)
{
    num++;
    q[num].ver_q=to;
    q[num].next_q=head[from];
    head[from]=num;
}
int main()
{
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        int from,to;
        cin>>from>>to;
        add(from,to);
    }
    dfs(1);
    cout<<endl;
    memset(f,0,sizeof(f));
    bfs(1);
    while(bfs_num<tail-1)
    bfs(bfs_que[bfs_num]);
    return 0;
}
void dfs(int now)
{
    if(f[now]==1)
    return;
    if(now==0)
    return;
    cout<<now<<" ";
    f[now]=1;
    int s=head[now],i,a[1000005];
    for(i=1;i;i++)
    {
        a[i]=q[s].ver_q;
        if(!q[s].next_q)
        break;
        s=q[s].next_q;
    }
    sort(a+1,a+1+i);
    for(int k=1;k<=i;k++)
    dfs(a[k]);
    return;
}
void bfs(int now)
{
    //cout<<now;
    bfs_num++;
    if(f[now]==1)
    return;
    if(now==0)
    return;
    f[now]=1;
    cout<<now<<" ";
    int s=head[now],record=tail;
    for( ; ;tail++)
    {
        bfs_que[tail]=q[s].ver_q;
        if(!q[s].next_q)
        {
            tail++;
            break;
        }
        s=q[s].next_q;
    }
    sort(bfs_que+record,bfs_que+tail);
    return;
}

2022/1/10 21:48
加载中...