Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public:
- int minimumSemesters(int n, vector<vector<int>>& relations) {
- vector<int> indegree(n+1);
- vector<vector<int>> graph(n+1);
- for(auto edge: relations){
- graph[edge[0]].push_back(edge[1]);
- indegree[edge[1]]++;
- }
- int level = 0, count=0;
- queue<int> q;
- for(int i=1; i<=n; i++){
- if(!indegree[i])
- q.push(i);
- }
- while(!q.empty()){
- int sz = q.size();
- count += sz;
- for(int i=0; i<sz; i++){
- int curr = q.front(); q.pop();
- for(int next: graph[curr]){
- if(--indegree[next] == 0)
- q.push(next);
- }
- }
- level++;
- }
- return (count == n) ? level:-1;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement