diff --git a/2116. Check if a Parentheses String Can Be Valid b/2116. Check if a Parentheses String Can Be Valid new file mode 100644 index 0000000..085b5c4 --- /dev/null +++ b/2116. Check if a Parentheses String Can Be Valid @@ -0,0 +1,42 @@ +class Solution { +public: + vector checkIfPrerequisite(int numCourses, vector>& prerequisites, vector>& queries) { + vector> graph(numCourses); + vector indegree(numCourses); + + + for(const auto& p : prerequisites) { + graph[p[0]].push_back(p[1]); + indegree[p[1]]++; + } + + queue q; + vector> pre(numCourses); + + for(int u = 0; u < numCourses; ++u) + if(!indegree[u]) + q.push(u); + + while(!q.empty()) { + int u = q.front(); q.pop(); + + for(int v : graph[u]) { + pre[v].insert(u); + pre[v].insert(pre[u].begin(), pre[u].end()); + + indegree[v]--; + if(!indegree[v]) + q.push(v); + } + } + + + vector ans(queries.size()); + for(int i = 0; i < queries.size(); ++i) { + int u = queries[i][0], v = queries[i][1]; + ans[i] = pre[v].find(u) != pre[v].end(); + } + + return ans; + } +};