@[_加零_](/user/502530) 见过dfs,没见过你这么dfs的
by zeng_hou_ming @ 2024-02-02 22:11:34
@[zeng_hou_ming](/user/1050605) 这不是 dfs 是啥。
by xiaoshumiao @ 2024-02-02 22:17:37
- `if(dis==d) return;` 改为 `if(dis>d) return;`
- 树要建双向边。
- 要开 vis 数组记录每一个点是否被遍历过。
AC 代码:
```cpp
#include<iostream>
#include<vector>
using namespace std;
const int maxn=1e5+5;
int n,d,ans=0;
vector<int> t[maxn];
bool vis[maxn];
void dfs(int now,int dis)
{
if(dis>d) return;
vis[now]=true;
++ans;
int len=t[now].size();
for(int i=0;i<len;i++) if(!vis[t[now][i]]) dfs(t[now][i],dis+1);
}
signed main()
{
std::ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>n>>d;
for(int i=1,x,y;i<n;i++)
{
cin>>x>>y;
t[x].push_back(y);
t[y].push_back(x);
}
vis[1]=true;
dfs(1,0);
cout<<ans-1<<endl;
return 0;
}
```
by xiaoshumiao @ 2024-02-02 22:25:28
@[_加零_](/user/502530)
by xiaoshumiao @ 2024-02-02 22:25:44