Codeforces 580C Kefa and Park 题解
2017-05-08 19:47
417 查看
题意
给定一颗以1为根的树,每个节点有一个权值(0或1),从根分别走向每个叶子节点(一直往下)且每一次至多连续经过m个权值为1的节点,问能成功到达多少叶子节点思路
dfs时记录一下连续经过权值为1的数量,如果超过就return,否则继续往下,到叶节点计数代码
#include <cstdio> #include <vector> using namespace std; vector<int> mp[100001]; int a[100001]; int ans; int n,m; void dfs(int x,int cnt,int from) { if(a[x]==0) cnt=0; else cnt++; if(cnt>m) return; if(mp[x].size()==1&&mp[x][0]==from) { ans++; return; } for(int i=0;i<mp[x].size();i++) if(mp[x][i]!=from) dfs(mp[x][i],cnt,x); return; } int main() { int x,y; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=0;i<n-1;i++) { scanf("%d%d",&x,&y); mp[x].push_back(y); mp[y].push_back(x); } dfs(1,0,0); printf("%d\n",ans); return 0; }
相关文章推荐
- Codeforces 580C Kefa and Park
- codeforces 580C Kefa and Park
- Codeforces 580C Kefa and Park(dfs)
- CodeForces - 580C Kefa and Park (dfs)
- CodeForces 580C Kefa and Park(DFS)
- codeforces 580C Kefa and Park DFS+树
- Codeforces 580C Kefa and Park【dfs】水题
- CodeForces 348C Subset Sums nsqrtn的姿势。。
- CodeForces 448
- CodeForces 702A Maximum Increase
- codeforces 2B 解题报告
- [随机算法+Hash] Codeforces 799F Round #413 F. Beautiful fountains rows
- codeforces 808G Anthem of Berland
- Codeforces 492D - Vanya and Computer Game (二分)
- 【CodeForces 489A】SwapSort
- Codeforces 67A Partial Teacher(模拟)
- CodeForces - 766B Mahmoud and a Triangle
- Codeforces 834D The Bakery【Dp+线段树】好题~
- CodeForces 712 D.Memory and Scores(dp)
- codeforces 493D Vasya and Chess(博弈?)