#include using namespace std; typedef long long int ll; typedef long double ld; typedef pair ii; typedef vector vi; typedef vector vii; #define PB push_back #define FOR(prom,a,b) for( ll prom = (a); prom < (ll)(b); ++prom ) #define F(a) FOR(i,0,a) #define FF(a) FOR(j,0,a) #define EPS (1e-10) #define INF ((1LL<<62LL)-1LL) #define EQ(a,b) (fabs(a-b)/fabs(a+b) < EPS) vi p; vector g; ll pare(ll id, ll par){ p[id]=par; for(ll n:g[id])if(n!=par){ pare(n,id); } } #define MAX 207 ll d[MAX][MAX][3];//no chip, chip ok, chip nok void dp(ll id, ll par){ F(MAX)FF(3)d[id][i][j]=0; d[id][0][0]=1; d[id][1][1]=1; d[id][1][2]=1; ll res[MAX]; for(ll n:g[id])if(n!=par){ dp(n,id); ll ne[MAX]; F(MAX)res[i]=0; F(MAX)ne[i]=d[n][i][0]+d[n][i][1]; // no chip now, all ok children F(MAX)FF(MAX) if(i+j> N >> M ) { g=vector( N ); p=vi(N); F(N-1) { int x, y; cin >> x >> y; --x; --y; g[x].PB(y);g[y].PB(x); } pare(0,0); dp(0,0); ll res=d[0][M][0]+d[0][M][1]; cout<