#include using namespace std; const int nmax=1e3+42,mod=100003; int n,people,dist; vector adj[nmax]; int normal(int x) { if(x>=mod)x=x-mod; return x; } vector< vector > my_merge(vector< vector > a,vector< vector > b) { vector< vector > ret={}; for(int d_a=0;d_a idle; vector< vector > start; vector< vector > rec(int node,int par) { vector< vector > ret=start; for(auto w:adj[node]) if(w!=par) { ret=my_merge(ret,rec(w,node)); } /* if(ret.size()==0)ret.push_back({}); while(ret[0].size()<2)ret[0].push_back({0}); ret[0][1]=normal(ret[0][1]+1); */ ret.insert(ret.begin(),idle); if(ret.size()==dist+2) { //cout<<"compress"< > help=rec(0,0); int outp=0; for(int i=0;ipeople)outp=normal(outp+help[i][people]); printf("%i\n",outp); return 0; }