Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<iostream>#include<vector>using namespace std;const int N(100);vector< vector<int> > source;int v[N];int f[N][N];void aftertree(int x, int m){f[x][1] = v[x];if(source[x].size() != 0){for(int i = 0; i < source[x].size(); i++){aftertree( source[x][i], m );for(int j = m; j > 1; j--)for(int k = 1; k < j; k++)f[x][j] = ( f[x][j] > (f[x][j-k] + f[source[x][i]][k]) ) ? f[x][j] : (f[x][j-k] + f[source[x][i]][k]);}}else{for(int i = 2; i < m; i++)f[x][i] = v[x];}}void oilpaint()