PROBLEM LINK:Author: Vineet Paliwal DIFFICULTY:Medium PREREQUISITES:Dynamic Programming, Suffix Sum, Fenwick Tree PROBLEM:Given a DirectedAcyclicGraph (DAG) G = (V, E) in which node i has edges to nodes in [i + 1, i + N[i]], find how many paths are there between S[i] and T. EXPLANATION:This DAG is really special and the order of 1 ... V is exactly same as its topo order in which edges are only existed from previous nodes to their later ones. Use F[i] to state the number of different paths starting from node i to node T.
The transmission can be described as following:
To speed up this transmission procedure, we can use a Fenwick Tree to get the sum. But we can achieve it in a simpler way as following, using suffix sum.
To answer each query, just directly output the F[S[i]]. Therefore, the time complexity is O(N + Q) in total. AUTHOR'S AND TESTER'S SOLUTIONS:Author's solution can be found here.
This question is marked "community wiki".
asked 18 Nov '13, 00:21

http://www.codechef.com/viewsolution/7049475 Can anyone suggest how to reduce time? I am exceeding the time limit. I am working with C. answered 30 May '15, 20:16
