Language: C++

#include<stdio.h>
#include<math.h>
#include<time.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<string>
#include<iomanip>
#define MOD 1000000007
#define MAX 5001
using namespace std;
int Total;
int Ans;
vector<int>Edge[MAX];
int Factorial[MAX];
int Dp[MAX][MAX];
int Size[MAX];
inline void Dfs(int Now,int Father)
{
	register int i;
	Size[Now]=1;
	Dp[Now][1]=1;
	for(i=0;i<Edge[Now].size();i++)
	{
		register int Next;
		Next=Edge[Now][i];
		if(Next!=Father)
		{
			Dfs(Next,Now);
			register int Tmp[MAX];
			register int j,k;
			for(j=1;j<=Size[Now]+Size[Next];j++)
			{
				Tmp[j]=0;
			}
			for(j=1;j<=Size[Now];j++)
			{
				for(k=1;k<=Size[Next];k++)
				{
					Tmp[j]=(Tmp[j]-(long long)Dp[Now][j]*Dp[Next][k]%MOD*Factorial[k])%MOD;
					Tmp[j+k]=(Tmp[j+k]+(long long)Dp[Now][j]*Dp[Next][k])%MOD;
				}
			}
			Size[Now]+=Size[Next];
			for(j=1;j<=Size[Now];j++)
			{
				Dp[Now][j]=Tmp[j];
			}
		}
	}
}
int main(void)
{
	register int i;
	cin>>Total;
	for(i=1;i<Total;i++)
	{
		register int U,V;
		cin>>U>>V;
		Edge[U].push_back(V);
		Edge[V].push_back(U);
	}
	Factorial[0]=1;
	for(i=2;i<=Total;i+=2)
	{
		Factorial[i]=(long long)Factorial[i-2]*(i-1)%MOD;
	}
	Dfs(1,0);
	for(i=2;i<=Total;i+=2)
	{
		Ans=(Ans+(long long)Dp[1][i]*Factorial[i])%MOD;
	}
	cout<<(Ans+MOD)%MOD<<endl;
	return 0;
}


Compiler output:
a.cc:14:1: error: 'vector' does not name a type
   14 | vector<int>Edge[MAX];
      | ^~~~~~
a.cc: In function 'void Dfs(int, int)':
a.cc:20:22: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   20 |         register int i;
      |                      ^
a.cc:23:19: error: 'Edge' was not declared in this scope
   23 |         for(i=0;i<Edge[Now].size();i++)
      |                   ^~~~
a.cc:25:30: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   25 |                 register int Next;
      |                              ^~~~
a.cc:30:38: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   30 |                         register int Tmp[MAX];
      |                                      ^~~
a.cc:31:38: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   31 |                         register int j,k;
      |                                      ^
a.cc:31:40: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   31 |                         register int j,k;
      |                                        ^
a.cc: In function 'int main()':
a.cc:54:22: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   54 |         register int i;
      |                      ^
a.cc:58:30: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   58 |                 register int U,V;
      |                              ^
a.cc:58:32: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   58 |                 register int U,V;
      |                                ^
a.cc:60:17: error: 'Edge' was not declared in this scope
   60 |                 Edge[U].push_back(V);
      |                 ^~~~