Loading docs/dp/tree.md +35 −41 Original line number Diff line number Diff line Loading @@ -92,26 +92,22 @@ $$ ??? note "参考代码" ```cpp #include<cstdio> #include <algorithm> #include <cstdio> using namespace std; struct edge { struct edge { int v, next; } e[305]; int head[305], f[305][305], cnt, s[305]; void addedge(int u,int v) { void addedge(int u, int v) { e[++cnt].v = v; e[cnt].next = head[u]; head[u] = cnt; } int dfs(int a) { int dfs(int a) { int p = 1; f[a][1] = s[a]; for(int t=head[a];t;t=e[t].next) { for (int t = head[a]; t; t = e[t].next) { int v = e[t].v; int now = dfs(v); //需要注意枚举的上下界 Loading @@ -123,12 +119,10 @@ $$ } return p; } int main() { int main() { int n, m; scanf("%d%d", &n, &m); for(int i=1;i<=n;i++) { for (int i = 1; i& lt; = n; i++) { int u; scanf("%d%d", &u, &s[i]); addedge(u, i); Loading Loading
docs/dp/tree.md +35 −41 Original line number Diff line number Diff line Loading @@ -92,26 +92,22 @@ $$ ??? note "参考代码" ```cpp #include<cstdio> #include <algorithm> #include <cstdio> using namespace std; struct edge { struct edge { int v, next; } e[305]; int head[305], f[305][305], cnt, s[305]; void addedge(int u,int v) { void addedge(int u, int v) { e[++cnt].v = v; e[cnt].next = head[u]; head[u] = cnt; } int dfs(int a) { int dfs(int a) { int p = 1; f[a][1] = s[a]; for(int t=head[a];t;t=e[t].next) { for (int t = head[a]; t; t = e[t].next) { int v = e[t].v; int now = dfs(v); //需要注意枚举的上下界 Loading @@ -123,12 +119,10 @@ $$ } return p; } int main() { int main() { int n, m; scanf("%d%d", &n, &m); for(int i=1;i<=n;i++) { for (int i = 1; i& lt; = n; i++) { int u; scanf("%d%d", &u, &s[i]); addedge(u, i); Loading