import java.util.ArrayList; import java.util.Scanner; public class Acyclicity { static int acyclic(ArrayList> adj) { ArrayList visited = new ArrayList<>(); int[] prev = new int[adj.size()]; int[] postv = new int[adj.size()]; int[] clock = new int[1]; clock[0] = 0; dfs(adj, visited, prev, postv, clock); for (int u = 0; u < adj.size(); u++) { for (int v : adj.get(u)) { if (postv[u] <= postv[v]) return 1; } } return 0; } private static void dfs(ArrayList> adj, ArrayList visited, int[] prev, int[] postv, int[] clock) { for (int v = 0; v < adj.size(); v++) { if (!visited.contains(v)) explore(adj, v, visited, prev, postv, clock); } } private static void explore(ArrayList> adj, int v, ArrayList visited, int[] prev, int[] postv, int[] clock) { visited.add(v); prev[v] = clock[0]; clock[0] = clock[0] + 1; for (int n : adj.get(v)) { if (!visited.contains(n)) explore(adj, n, visited, prev, postv, clock); } postv[v] = clock[0]; clock[0] = clock[0] + 1; } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int m = scanner.nextInt(); ArrayList> adj = new ArrayList>(); for (int i = 0; i < n; i++) { adj.add(new ArrayList()); } for (int i = 0; i < m; i++) { int x, y; x = scanner.nextInt(); y = scanner.nextInt(); adj.get(x - 1).add(y - 1); } System.out.println(acyclic(adj)); } }