题目传送门:https://www.luogu.org/problemnew/show/P1600
感觉这两天在处理边界问题上有点神志不清......为了从80的暴力变成100,花了整整一个下午+一个晚上的时间(还好最后还是搞了出来)
题目大意:给你一棵树N个点的无根树,有M个人要从Si走到Ti,行走速度为每秒一条边。对于树上任意节点i,求出所有经过该点时行走时间恰好为Wi的路径数量。且这M个人到达终点后下一秒会立即消失。
先来说说暴力,写得妙的话,这题暴力可以拿80分(是不是很良心??)
这种题目考场上最好还是打暴力
25分(1到5号点):直接对于所有的任务,模拟从S跑到T,随后直接统计答案即可。
1 bool dfs(int x,int fa,int t,int dep){ 2 if(x==t){ 3 if(dep==w[x]) ans[x]++; 4 return 1; 5 } 6 for(int i=head[x];i;i=e[i].next) if(e[i].u!=fa){ 7 if(dfs(e[i].u,x,t,dep+1)){ 8 if(dep==w[x]) ans[x]++; 9 return 1; 10 } 11 } 12 return 0; 13 }