kanh's algo og topological sort
O(V+E) time Complexity
class Solution { public: vector<int> toposort(vector<vector<int>>&adj,int V){ vector<int>count(V,0); queue<int>q; vector<int>visited; for(int i=0;i<V;i++){ for(int x:adj[i]){ count[x]++; } } for(int i=0;i<V;i++){ if(count[i]==0) q.push(i); } while(!q.empty()){ int x=q.front(); q.pop(); visited.push_back(x); for(int y:adj[x]){ count[y]--; if(count[y]==0)q.push(y); } } return visited; } bool canFinish(int numCourses, vector<vector<int>>& prerequisites) { vector<vector<int>> adj(numCourses); for(auto& e : prerequisites){ adj[e[1]].push_back(e[0]); } vector<int>ans=toposort(adj,numCourses); if(ans.size()==numCourses)return true; return false; } };
my modifie dversion
O(V*V) time complexity
No comments:
Post a Comment