求助,DFS错,BFS还是错(DFS和AC代码几乎一模一样,哪错了)
查看原帖
求助,DFS错,BFS还是错(DFS和AC代码几乎一模一样,哪错了)
649445
wuyuchen5001143楼主2022/7/11 19:02

DFS全WA代码

#include <stdio.h>
#include <vector>
using namespace std;
vector <int> e[100001];
int n,d,ans=0;
void dfs(int p,int fa,int bs)
{
	if(bs==d) return ;
	for(int i=0;i<e[p].size();i++)
	{
		if(e[p][i]==fa) continue;
		dfs(e[p][i],p,bs+1);
		ans++;
	}
	return ;
}
int main()
{
	scanf("%d%d",&n,&d);
	int u,v;
	for(int i=1;i<=n-1;i++)
	{
		scanf("%d%d",&u,&v);
		e[u].push_back(u);
		e[v].push_back(v);
	}
	dfs(1,0,0);
	printf("%d\n",ans);
	return 0;
}

DFS AC代码

#include <bits/stdc++.h>
using namespace std;
vector <int> e[200005];
int n,u,v,d,ans=0;
void dfs(int u,int fa,int dep)
{
	if(dep==d) return;
	for(int i=0;i<e[u].size();i++)
	{
		int v=e[u][i];
		if(v==fa) continue;
		dfs(v,u,dep+1);
		ans++;
	}
	return;
}
int main()
{
	cin>>n>>d;
	for(int i=1;i<=n-1;i++)
	{
		cin>>u>>v;
		e[u].push_back(v);
		e[v].push_back(u);
	}
	dfs(1,0,0);
	cout<<ans<<endl;
	return 0;
}

BFS全WA代码

#include <stdio.h>
#include <vector>
#include <queue>
using namespace std;
struct zb
{
	int p,s,fa;
};
vector <int> e[200001];
queue <zb> l;
void push(int p,int fa,int s)
{
	l.push((zb){p,fa,s});
	return ;
}
int n,d,ans=0,x=0;
void bfs()
{
	push(1,0,0);
	while(x<=d)
	{
		int p=l.front().p;
		int fa=l.front().fa;
		int s=l.front().s;
		l.pop();
		for(int i=0;i<e[p].size();i++)
		{
			if(e[p][i]==fa) continue;
			push(e[p][i],p,s+1);
			ans=s+1;
		}
		x++;
	}
	return ;
}
int main()
{
	scanf("%d%d",&n,&d);
	int u,v;
	for(int i=1;i<=n-1;i++)
	{
		scanf("%d%d",&u,&v);
		e[u].push_back(u);
		e[v].push_back(v);
	}
	bfs();
	printf("%d\n",ans);
	return 0;
}
2022/7/11 19:02
加载中...