class Solution {
public static void addEdge(ArrayList<ArrayList<Integer>> adj,int u,int v,int indegree[]){
adj.get(v).add(u);
indegree[u]=indegree[u]+1;
}
public boolean canFinish(int n, int[][] prerequisites) {
int indegree[]=new int[n];
ArrayList<ArrayList<Integer>> adj=new ArrayList<ArrayList<Integer>>(n);
for(int i=0;i<n;i++){
adj.add(new ArrayList<Integer>());
}
for(int i=0;i<prerequisites.length;i++){
addEdge(adj,prerequisites[i][0],prerequisites[i][1],indegree);
}
Queue<Integer> q=new LinkedList<Integer>();
for(int i=0;i<n;i++){
if(indegree[i]==0){
q.add(i);
}
}
while(!q.isEmpty()){
int curr=q.poll();
for(int j:adj.get(curr)){
if(indegree[j]!=0)
indegree[j]=indegree[j]-1;
if(indegree[j]==0){
q.add(j);
}
}
}
for(int i=0;i<n;i++){
class Solution {
public static void addEdge(ArrayList<ArrayList<Integer>> adj,int u,int v,int indegree[]){
adj.get(v).add(u);
indegree[u]=indegree[u]+1;
}
public boolean canFinish(int n, int[][] prerequisites) {
int indegree[]=new int[n];
ArrayList<ArrayList<Integer>> adj=new ArrayList<ArrayList<Integer>>(n);
for(int i=0;i<n;i++){
adj.add(new ArrayList<Integer>());
}
for(int i=0;i<prerequisites.length;i++){
addEdge(adj,prerequisites[i][0],prerequisites[i][1],indegree);
}
Queue<Integer> q=new LinkedList<Integer>();
for(int i=0;i<n;i++){
if(indegree[i]==0){
q.add(i);
}
}
while(!q.isEmpty()){
int curr=q.poll();
for(int j:adj.get(curr)){
if(indegree[j]!=0)
indegree[j]=indegree[j]-1;
if(indegree[j]==0){
q.add(j);
}
}
}
for(int i=0;i<n;i++){
if(indegree[i]!=0){
return false;
}
}
return true;
}//main method}//class
if(indegree[i]!=0){
return false;
}
}
return true;
}//main method}//class