60蒟蒻求助
查看原帖
60蒟蒻求助
56749
default111楼主2020/10/31 21:09

第三个点是bfs错了,第五个点是dfs错了,为什么呢。。。查不出来哪里有问题。。。

#include<cstdio>
#include<vector>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
const int N=100005;
vector<int> area[N];
bool vst[N];
int n,m;
void dfs(int x){
    printf("%d ",x);
    vst[x]=true;
    int len=area[x].size();
    for(int i=0;i<len;i++)
        if(!vst[area[x][i]])
            dfs(area[x][i]);
    return;
}
void bfs(int x){
    queue<int> l;
    l.push(x);
    while(!l.empty()){
        int cur=l.front();
        l.pop();
        //printf("%d ",cur);
        
        if(!vst[cur]) {
            printf("%d ",cur);
            vst[cur]=true;
        }
        else continue;
        int len=area[cur].size();
        for(int i=0;i<len;i++)
            if(!vst[area[cur][i]]){
                l.push(area[cur][i]);
                //vst[area[cur][i]]=true;
            }
    }
}
int main()
{
    scanf("%d%d",&n,&m);
    while(m--){
        int a,b;
        scanf("%d%d",&a,&b);
        //area[a][b]=true;
        area[a].push_back(b);
    }
    for(int i=0;i<n;i++)
    {
        int len=area[i].size();
        sort(area[i].begin(),area[i].end());
    }
    memset(vst,0,sizeof(vst));
    dfs(1);
    putchar('\n');
    memset(vst,0,sizeof(vst));
    bfs(1);
}
2020/10/31 21:09
加载中...