@[telankesi](/user/866969)
给定的是树,为无向图,您读入图时按有向图读入,会导致有顶点无法到达,因此出错。
by metaphysis @ 2023-05-10 17:49:35
@[metaphysis](/user/333388) ```cpp
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int n, d;
typedef struct Edge {
int y;
int next;
} E;
E e[100010] = { 0 };
int h[100010];//顶点的第一条边存储
int v[100010];
void dfs(int i, int dis, int& num) {
if (v[i] == 1 || dis > d)return;
v[i] = 1;
num++;
for (int j = h[i]; j; j = e[j].next) {
dfs(e[j].y, dis + 1, num);
}
return;
}
int cnt;
void add(int u, int v) {
cnt++;
e[cnt].y = v;
e[cnt].next = h[u];
h[u] = cnt;
}
int main() {
scanf("%d %d", &n, &d);
int u, v;
for (int i = 1; i <= n - 1; i++) {
scanf("%d %d", &u, &v);
add(u, v);
add(v, u);
}
int num = -1;
dfs(1, 0, num);
cout << num;
return 0;
}
```
改之后20分,不知道怎么回事
by telankesi @ 2023-05-10 18:17:53
@[telankesi](/user/866969)
```cpp
E e[100010] = { 0 };
```
边数不够,改成 `200010` 即可。
by metaphysis @ 2023-05-10 21:46:28
@[metaphysis](/user/333388) 钛强辣
by wooood @ 2023-08-11 15:21:56