If you are adding the max time at each level that means that you have assigned that level's manager some extra delay time to relay the info down to the employees which is not the case.. for the example shown below, if we follow your approach the result would be 5 but the correct result is 4 beacuse beacuse the process is done in parallel so taking the max and adding it, will add a delay to the result. 0 ( adds 1) / \ 1 (adds 1) 1 (adds 2) / \ / \ 2 2 (adds 2) 3 3 (adds 1) / \ /\ 5 5 4 4
I stuck in the same case and finally I figure out why. The inform passing path should be sequential. In case 8. 6->2 will take 975 and 8->5->0 will take 261+170. If you adding maxtime at each level you would have 6->2 adding 5->0 but its not a valid path.
Damn, i spent like an hour trying to figure out what went wrong in my code. Eventually I realised that I used, i one place, informTime[i] (i.e the current employee) rather than informTime[headID]. I used dfs btw.
Hi @NeetCodeIO, what do you think about starting DFS from the leaf node and traversing back to the root? That we wouldn't need to create another graph and it is possible to reach O(1) space complexity with path compression.
I thought about this too, I just think DFS would depend more on how lucky you get (because you need to get the leaf with the most expensive time costs)
@@zweitekonto9654 Actually not because by path compression I detach the visited nodes from the original tree (basically modify the manager array) so that I could retrieve the informTime of a visited node in O(1) time
I Come up with some different approach but similar xD Build a Tree and finding the max time using postOrder Traversal class Solution { public int numOfMinutes(int n, int headID, int[] manager, int[] informTime) { List adj = new ArrayList(); for(int i=0;i
Hey Neetcode, I became a paid member of your website but there doesn't seem to be much content. Hope you're alright. Waiting for more uploads from you soon.
bro update your website please
This explanation is so simple and mad easy. Thankyou for all your work and efforts!
Thanks for the daily
ig kinda like max depth but weighted edges.
why is adding the maxTime at each level incorrect? it makes sense to me but I fail at test case 8
If you are adding the max time at each level that means that you have assigned that level's manager some extra delay time to relay the info down to the employees which is not the case.. for the example shown below, if we follow your approach the result would be 5 but the correct result is 4 beacuse beacuse the process is done in parallel so taking the max and adding it, will add a delay to the result.
0 ( adds 1)
/ \
1 (adds 1) 1 (adds 2)
/ \ / \
2 2 (adds 2) 3 3 (adds 1)
/ \ /\
5 5 4 4
I stuck in the same case and finally I figure out why. The inform passing path should be sequential. In case 8. 6->2 will take 975 and 8->5->0 will take 261+170. If you adding maxtime at each level you would have 6->2 adding 5->0 but its not a valid path.
Thank you
Damn, i spent like an hour trying to figure out what went wrong in my code. Eventually I realised that I used, i one place, informTime[i] (i.e the current employee) rather than informTime[headID]. I used dfs btw.
Beautifully explained. Thank you!
Hi, Are you not uploading this new content on your Neetcode All list on the website?
Hi @NeetCodeIO, what do you think about starting DFS from the leaf node and traversing back to the root? That we wouldn't need to create another graph and it is possible to reach O(1) space complexity with path compression.
I thought about this too, I just think DFS would depend more on how lucky you get (because you need to get the leaf with the most expensive time costs)
You would still require extra space to keep track of which leaf nodes and path you have traversed?
@@zweitekonto9654 Actually not because by path compression I detach the visited nodes from the original tree (basically modify the manager array) so that I could retrieve the informTime of a visited node in O(1) time
Thanks for the video! But I think it should be: q = deque([(headID, informTime[headID])]), in case if it takes some time to inform head of managers
It is not mentioned in the problem statement that this could be the case, so it doesn't actually matter... both are correct
I believe informTime[headID] is the time it takes to inform employees of head, not head itself.
another version of problem "max sum from root to leaf"
Dear Neetcode, could you do a video on **956. Tallest Billboard** when you are free? Always appreciating your videos, thank you ≧◉◡◉≦
I Come up with some different approach but similar xD
Build a Tree and finding the max time using postOrder Traversal
class Solution {
public int numOfMinutes(int n, int headID, int[] manager, int[] informTime) {
List adj = new ArrayList();
for(int i=0;i
Hey Neetcode, I became a paid member of your website but there doesn't seem to be much content. Hope you're alright. Waiting for more uploads from you soon.
1249ms runtime beats 80%. Wow. My java dfs only took 100 ms and cant beat 50%
great
why arent uplaoding daily LC🥲 ?we go through ur videos when ever we have any dbt ,cause ur explanation is the best