为啥这样做会RE&WA QAQ
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn = 15;
const int maxk = 101;
struct edge{
int to, nxt;
}edge[maxn*maxn];
int head[maxn], cnt;
int n, k, a[maxn], b[maxn], dp[maxn][maxk], sum[maxn][maxk];
bool vis[maxn];
void add(int x, int y) {
edge[++cnt].to = y; edge[cnt].nxt = head[x]; head[x] = cnt;
}
void dfs(int x) {
for(int i = head[x]; i; i = edge[i].nxt) {
int y = edge[i].to;
if(!vis[y]) {
vis[y] = true;
dfs(y);
sum[x][++cnt] = sum[y][cnt] + dp[y][cnt];
}
}
dp[x][1] = a[x];
for(int i = 2; i <= k && !vis[x]; i++) {
dp[x][i] = max(dp[x][i-1], sum[x][i-1] - sum[x][i-2]);
}
}
int main() {
scanf("%d%d", &n, &k);
for(int i = 1; i <= n; i++) {
scanf("%d", &a[i]); b[i] = 0;
for(int j = 1; j <= n; j++) if(i != j) add(j, i);
}
dfs(1); printf("%.6lf\n", (double)dp[n][k]/k);
return 0;
}