Guest User

Untitled

a guest
Apr 7th, 2017
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.95 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.ArrayList;
  5. import java.util.Arrays;
  6.  
  7. public class XYZ{
  8.  
  9.     final static int WHITE=0,GREY=1,BLACK=2;
  10.     static boolean vis[]=new boolean[100000];
  11.     static int colour[]=new int[100000];
  12.     static ArrayList<Integer> adj[]=new ArrayList[100000];
  13.    static int ans;
  14.  
  15.     public static void main(String[] args) throws IOException {
  16.         BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  17.         int t=Integer.parseInt(br.readLine()),n,m;
  18.         String[]s;
  19.         for (int i = 0; i < 100000; i++) {
  20.             adj[i]=new ArrayList<>();
  21.         }
  22.         while (t-->0){
  23.             s=br.readLine().split("\\s");
  24.             n=Integer.parseInt(s[0]);
  25.             m=Integer.parseInt(s[1]);
  26.             for (int i = 0; i < n; i++) {
  27.                 adj[i].clear();
  28.             }
  29.             Arrays.fill(colour,0,n,WHITE);
  30.             Arrays.fill(vis,0,n,false);
  31.             for (int i = 0; i < m; i++) {
  32.                 s=br.readLine().split("\\s");
  33.                 int u=Integer.parseInt(s[0])-1;
  34.                 int v=Integer.parseInt(s[1])-1;
  35.                 adj[u].add(v);
  36.             }
  37.  
  38.             System.out.println(solve(adj,n));
  39.         }
  40.     }
  41.  
  42.     private static int solve(ArrayList<Integer>[] adj, int n) {
  43.         for (int i = 0; i < n; i++) {
  44.             if (!vis[i]) {
  45.                 ans =0;
  46.                 dfs(i);
  47.                 if (ans==1)
  48.                     return 0;
  49.             }
  50.         }
  51.         return 1;
  52.     }
  53.  
  54.     private static void dfs(int u) {
  55.         colour[u]=GREY;
  56.         vis[u]=true;
  57.  
  58.         for (int i = 0; i < adj[u].size(); i++) {
  59.             int v=adj[u].get(i);
  60.             if (colour[v]==GREY){
  61.                 ans=1;
  62.                 return;
  63.             }
  64.             if (!vis[v])
  65.                  dfs(v);
  66.         }
  67.         colour[u]=BLACK;
  68.     }
  69.  
  70. }
Add Comment
Please, Sign In to add comment