关于做网站的ppt,站内优化主要从哪些方面进行,宁夏做网站,设置网站的默认文档正题 题目大意
求一棵树上有多少个联通块的最大值和最小值差为k。 解题思路
其实直接用差k的减去差k的就是等于k的答案。 然后枚举一个点为最大值#xff0c;然后只往小编号扩张就好了(不重)。 code
#includecstdio
#includecstring
#includea…正题 题目大意
求一棵树上有多少个联通块的最大值和最小值差为k。 解题思路
其实直接用差k的减去差k的就是等于k的答案。 然后枚举一个点为最大值然后只往小编号扩张就好了(不重)。 code
#includecstdio
#includecstring
#includealgorithm
#define N 4000
#define XJQ 19260817
#define ll long long
using namespace std;
struct node{ll to,next;
}a[N*2];
ll ls[N],w[N],ans1,ans2,n,k,tot,x,y,in[N];
void addl(ll x,ll y)//加边
{a[tot].toy;a[tot].nextls[x];ls[x]tot;
}
ll dp(ll x,ll fa,ll root,ll W)//dp
{ll rep1;for(ll ils[x];i;ia[i].next){int va[i].to;if(vfa||w[a[i].to]w[root]) continue;if(w[root]-w[v]W) continue;if(vroot||w[v]w[root])rep(rep*(dp(v,x,root,W)1)%XJQ)%XJQ;}return rep;
}
int main()
{scanf(%lld%lld,n,k);for(ll i1;in;i)scanf(%lld,w[i]);for(ll i1;in;i){scanf(%lld%lld,x,y);addl(x,y);addl(y,x);}for(ll i1;in;i){ans1(ans1dp(i,i,i,k))%XJQ;if(k) ans2(ans2dp(i,i,i,k-1))%XJQ;}printf(%lld,(ans1-ans2XJQ)%XJQ);
}