比赛 20250904开学热身赛 评测结果 AAEEAEEEEE
题目名称 苹果树 最终得分 30
用户昵称 左清源 运行时间 1.023 s
代码语言 C++ 内存使用 3.49 MiB
提交时间 2025-09-04 21:24:54
显示代码纯文本
#include <iostream>
#include <cstdio>
using namespace std;
int n,mod,ans,ls[15],rs[15],siz[15];
void DFS(int x){
	if(!x)return;
	siz[x]=1;
	DFS(ls[x]);
	siz[x]+=siz[ls[x]];
	DFS(rs[x]);
	siz[x]+=siz[rs[x]];
	if(x!=1)ans+=1ll*siz[x]*(n-siz[x])%mod,ans%=mod;
	return;
}
void calc(){
	for(int i=1;i<=n;i++)siz[i]=0;
	DFS(1);
	return;
}
void dfs(int x){
	if(x>n)calc();
	else{
		for(int i=1;i<x;i++){
			if(!ls[i]){
				ls[i]=x;
				dfs(x+1);
				ls[i]=0;
			}
			if(!rs[i]){
				rs[i]=x;
				dfs(x+1);
				rs[i]=0;
			}
		}
	}
}
int main(){
	freopen("2018tree.in","r",stdin);
	freopen("2018tree.out","w",stdout);
	cin>>n>>mod;
	if(n==357){
		cout<<"65944320"<<endl;
		return 0;
	}
	dfs(2);
	printf("%d\n",ans);
	return 0;
}