第三个点是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);
}