没有上司的晚会,经典的树形DP题。
View Code
1 #include2 #include 3 #define MAX(a,b) ((a)>(b)?(a):(b)) 4 #define N 6000 5 int a[N],p[N],d[N],c[N],vis[N],sums[N],sumgs[N],dmax,n; 6 int fd(int k) 7 { 8 if(!vis[k]) return d[k]=0; 9 if(d[k]) return d[k];10 return d[k]=fd(p[k])+1;11 }12 int main()13 {14 int i,j,u,v,ans;15 while(~scanf("%d",&n))16 {17 for(i=0;i =0;i--)32 {33 for(j=0;j 0) sums[p[j]]+=c[j];37 if(i>1) sumgs[p[p[j]]]+=c[j];38 }39 }40 ans=0;41 for(i=0;i