View Code of Problem 131

import  java.util.*;
public class Main {
	public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        while(scanner.hasNext()){
            int n=scanner.nextInt();
            int m=scanner.nextInt();
            if(n==0&&m==0){
                break;
            }
            int[][] courses=new int[m][2];
            for(int i=0;i<m;i++){
                courses[i][0]=scanner.nextInt();
                courses[i][1]=scanner.nextInt();
            }
 
            Main main=new Main();
            if(main.canFinish(n,courses)){
                System.out.println("RIGHT");
            }
            else{
                System.out.println("ERROR");
            }
        }
    }
 
    public boolean canFinish(int n,int[][] courses){
        int[] entrance=new int[n];
        for(int[] ints:courses){
            entrance[ints[0]-1]++;
        }
        Queue<Integer> queue=new ArrayDeque<>();
        for(int i=0;i<n;i++){
            if(entrance[i]==0){
                queue.add(i+1);
            }
        }
 
        while (!queue.isEmpty()){
            int pre=queue.remove();
            n--;
            for(int[] ints:courses){
                if(ints[1]!=pre){
                    continue;
                }
                if(--entrance[ints[0]-1]==0){
                    queue.add(ints[0]);
                }
            }
        }
 
        return n==0;
    }
}

Double click to view unformatted code.


Back to problem 131