Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<stdio.h>#include<vector>#include<algorithm>using namespace std;int dp[1000][1000], rec[1000];vector<int> v[1000], order, vv[1000];void dfs(int x){rec[x] = 1;for(int i = 0; i < v[x].size(); i++)if(!rec[v[x][i]])vv[x].push_back(v[x][i]), dfs(v[x][i]);//printf("%d ", x);order.push_back(x);}int main(){int n, m;scanf("%d%d", &n, &m);for(int i = 1; i <= n; i++)scanf("%d", &dp[i][1]);for(int i = 0; i < n-1; i++){int a, b;scanf("%d%d", &a, &b);v[a].push_back(b);v[b].push_back(a);}dfs(1);for(int h = 0; h < n; h++){int a = order[h];for(int k = 0; k < vv[a].size(); k++){int b = vv[a][k];for(int i = m; i > 1; i--)