I solved the problem using Trie. It looks like my approach is correct but there is one test case failing.
Here is the link of my submission. https://www.codechef.com/viewsolution/13622298
Here acc flag store whether that node comes under accessible category or not. Same is for nAcc flag for blocked websites. I think issue maybe in no solution condition. My code consider following case as no solution
Their is no need to use trie tree.
Just take 2 sets one containing all blocked websites and other set containing all unblocked websites.
Since sets are automatically arranged lexicographically , just take one blocked website and insert it into the set of unblocked websites.Now you only need to check for two websites only,the one after its position in set2 and the one before its position in set2.
The longest same string L will be the answer and insert substring(L+1) itto into another set3.
If the length found is equal to length of blocked website taken at that time simply print -1;
Actually, test cases of above type did not exist in the small subtask. Basically, this test case for which your solution is failing is the one having -1 as the solution. I too had some trouble while solving this one.
Hope this helps you. BTW, my solution is same as yours. You may look into my solution in the editorial for more help.
For the sample input I have provided, when the node e is reached, root->children[i]->acc && root->children[i]->nAcc is satisfied and the algorithm proceeds, whereas actually at this stage itself the no solution status should be detected. Hope this helps