- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
Kefa decided to celebrate his first big salary by going to the restaurant.
He lives by an unusual park. The park is a rooted tree consisting of n vertices with the root at vertex 1. Vertex 1 also contains Kefa's house. Unfortunaely for our hero, the park also contains cats. Kefa has already found out what are the vertices with cats in them.
The leaf vertices of the park contain restaurants. Kefa wants to choose a restaurant where he will go, but unfortunately he is very afraid of cats, so there is no way he will go to the restaurant if the path from the restaurant to his house contains more than m consecutive vertices with cats.
Your task is to help Kefa count the number of restaurants where he can go.
Input The first line contains two integers, n and m (2 ≤ n ≤ 105, 1 ≤ m ≤ n) — the number of vertices of the tree and the maximum number of consecutive vertices with cats that is still ok for Kefa.
The second line contains n integers a1, a2, ..., an, where each ai either equals to 0 (then vertex i has no cat), or equals to 1 (then vertex i has a cat).
Next n - 1 lines contains the edges of the tree in the format "xi yi" (without the quotes) (1 ≤ xi, yi ≤ n, xi ≠ yi), where xi and yi are the vertices of the tree, connected by an edge.
It is guaranteed that the given set of edges specifies a tree.
Output A single integer — the number of distinct leaves of a tree the path to which from Kefa's home contains at most m consecutive vertices with cats.
Examples input
4 1
1 1 0 0
1 2
1 3
1 4
output
2
input
7 1
1 0 1 1 0 0 0
1 2
1 3
2 4
2 5
3 6
3 7
output
2
这个 dfs 算法与这个问题上许多已接受的提交非常相似,仍然得到 tle...它在自定义案例中运行良好...我无法找到它在哪里提供 TLE
#include<bits/stdc++.h>
#define ll unsigned long long int
#define ld long double
#define pb push_back
#define fillarray for(int i=0;i<n;i++)
using namespace std;
int give(auto edge,auto node,auto visited,int index,int m,int x)
{
if(edge[index].size()==1&&index!=0)
{
if(x+node[index]<=m) return 1;
else return 0;
}
if(visited[index]) return 0;
visited[index]=1;
if(node[index]) x++;
else x=0;
if(x>m) return 0;
int sum=0;
for(int i=0;i<edge[index].size();i++)
{
sum+=give(edge,node,visited,edge[index][i],m,x);
}
return sum;
}
int main()
{
int n,m;
cin>>n>>m;
vector<vector<int>> edge(n);
vector<bool> node(n);
vector<bool> visited(n,0);
fillarray{
bool x; cin>>x;
node[i]=x;
}
for(int i=0;i<n-1;i++)
{
int x,y;
cin>>x>>y;
edge[x-1].pb(y-1);
edge[y-1].pb(x-1);
}
cout<<give(edge,node,visited,0,m,0);
}
最佳答案
您需要通过引用传递:
int give(const auto& edge,const auto& node,auto& visited,int index,int m,int x)
仅通过此更改,我就通过了测试。
关于c++ - DFS 在 kefa 和 park 中提供 TLE(codeforces 560C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57751744/
有一个未排序的列表 a 和一个范围列表,如 ranges = [(10, 20), (30, 50), (15, 35) ...]。 a 中的最大值为 uint64_t。目标是计算每个范围的元素数量。
在没有Maps帮助的情况下通过Memoization解决问题,由于读取文件的方法,我得到了TLE,根据我的说法,这不应该是这种情况。可能的原因是什么? 这是给出 AC - http://ideone.
我正在用 C 语言编写一个宾果游戏程序,该程序出现“时间限制”当在线评委给我巨大的宾果游戏板(例如 256*256 板 1 人或 150*150 板 6 人)时,我超出了”。我如何优化我的代码以避免
我真的很困惑,为什么我的 Java 代码无法正常工作,它在 Hacker Earth 上的 Code Monks 上提供了 TLE。这是 1 的链接 Link to Question第一个问题 MON
我正在尝试来自 Interviewbit 的以下问题: Given a m x n grid filled with non-negative numbers, find a path from to
Question Given N and M, write an equation using left shift operators whose result will be equal to t
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我正在尝试使用ephem TLE 数据跟踪月球的位置,然后将其存储在data.csv 文件中。但是,我找不到它! 下面的代码是我正在尝试做的事情的示例,这是针对国际空间站的,它是我找不到的月球的“第
当我在 hackerearth 提交此代码时,我得到了 TLE。 任何建议我如何优化这个代码。 #include #include int checkPrime(int); int main()
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我正在尝试解决这个问题:http://olimpiada-informatica.org/?cmd=downloadE&pbm=velo101&ext=pdf它是西类牙语,但我会尝试在这里翻译它: Y
我有顺时针旋转 2D 矩阵的工作代码,但当 k 达到大数时,我遇到了 TLE(超出时间限制)问题。我不知道如何简化我的代码,我猜是 for 循环导致了问题,但我看不出没有它们就可以使我的代码工作的方法
我正在解决 this problem通过使用线段树。我在每个节点保存总和、最大值、最左边的最大值和最右边的最大值。然后我搜索图表以找到特定时间间隔的答案。我怎样才能提高这段代码的速度? import
当我将我的解决方案提交给 codechef 时,我不断收到时间限制错误。我从扫描仪切换到缓冲阅读器,但这并没有解决它。我认为它在我的算法中,但我不确定在哪里,除了检查每 5 个减量之外可能是不必要的。
我正在重新尝试这个 problem statement , now that the contest is all over (所以这不是作弊或任何东西,只是想学习,因为答案没有公布,只有给定测试用例
问题的链接是 - spoj question 我尝试通过这种方法解决问题 - N 范围内的对数 = N-1 范围内的对数 + 一些新对。 但我不知道这里还应该做哪些优化来避免 TLE。我还阅读了有关
问题:Ekka 和他的 friend Dokka 决定买一个蛋糕。他们都喜欢蛋糕,这就是为什么他们买了蛋糕后想分享蛋糕。顾名思义,Ekka 非常喜欢奇数,Dokka 非常喜欢偶数,他们想分蛋糕,让 E
我正在尝试解决 UVA 在线判断上的 12503 问题。我想我已经找到了解决方案,但它给了我 TLE。这是问题所在: 你有一个机器人站在 x 轴的原点上。机器人将得到一些指令。你的任务是在执行完所有指
标准的两行元素 (TLE) 格式包含 2 位数年份加小数天的时间,因此 16012.375 将是 2016 年 1 月 12 日 09:00。使用 python 的 time 或 datatime 模
这是我要解决的问题,我正在使用 The Fact That Prefix Sum[i] - Prefix Sum[i-1] Leads to Frequency being greater than
我是一名优秀的程序员,十分优秀!