Skip to content

Commit 025b6ec

Browse files
authored
Create 2116. Check if a Parentheses String Can Be Valid (#698)
2 parents 62c69ab + 9f32bf6 commit 025b6ec

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
class Solution {
2+
public:
3+
vector<bool> checkIfPrerequisite(int numCourses, vector<vector<int>>& prerequisites, vector<vector<int>>& queries) {
4+
vector<vector<int>> graph(numCourses);
5+
vector<int> indegree(numCourses);
6+
7+
8+
for(const auto& p : prerequisites) {
9+
graph[p[0]].push_back(p[1]);
10+
indegree[p[1]]++;
11+
}
12+
13+
queue<int> q;
14+
vector<unordered_set<int>> pre(numCourses);
15+
16+
for(int u = 0; u < numCourses; ++u)
17+
if(!indegree[u])
18+
q.push(u);
19+
20+
while(!q.empty()) {
21+
int u = q.front(); q.pop();
22+
23+
for(int v : graph[u]) {
24+
pre[v].insert(u);
25+
pre[v].insert(pre[u].begin(), pre[u].end());
26+
27+
indegree[v]--;
28+
if(!indegree[v])
29+
q.push(v);
30+
}
31+
}
32+
33+
34+
vector<bool> ans(queries.size());
35+
for(int i = 0; i < queries.size(); ++i) {
36+
int u = queries[i][0], v = queries[i][1];
37+
ans[i] = pre[v].find(u) != pre[v].end();
38+
}
39+
40+
return ans;
41+
}
42+
};

0 commit comments

Comments
 (0)