dfs求助

P5908 猫猫和企鹅

@[_加零_](/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


|