为什么这样写过了样例但是0分?

P5908 猫猫和企鹅

@ 77Glorious 深度小于 $d$ 就可以拜访,这里不对, 还有根节点也会被遍历到,所以要输出 $ans-1$。 改了就ac了。 ``` #include<bits/stdc++.h> using namespace std; const int maxn=1e5+5; vector<int> g[maxn]; bool vis[maxn]; int n,d,ans; void dfs(int x,int dis) { vis[x]=1; if(dis<=d) { ans++; if(dis==d) return; } for(int i=0;i<g[x].size();i++) { if(!vis[g[x][i]])//相通的没去过就去 dfs(g[x][i],dis+1); } } int main() { cin>>n>>d; int u,v; for(int i=1;i<n;i++) { cin>>u>>v; g[u].push_back(v); g[v].push_back(u); } dfs(1,0); cout<<ans-1; } ```
by swww77 @ 2024-07-26 09:51:09


|