dfS没错啊,全wa,样例能过,悬赏关注4~5,qiuzhu

P5908 猫猫和企鹅

@[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


|