Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- import java.util.ArrayList;
- import java.util.Scanner;
- import java.util.Stack;
- import java.util.StringTokenizer;
- class FastScanner {
- private BufferedReader br;
- private StringTokenizer st;
- public FastScanner(InputStreamReader reader) {
- br = new BufferedReader(reader);
- }
- public String next() {
- while (st == null || !st.hasMoreTokens()) {
- try {
- st = new StringTokenizer(br.readLine());
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- return st.nextToken();
- }
- public int nextInt() {
- return Integer.parseInt(next());
- }
- public double nextDouble() {
- return Double.parseDouble(next());
- }
- public void close() throws Exception {
- br.close();
- }
- }
- public class A {
- public static void main(String[] args) {
- FastScanner s = new FastScanner(new InputStreamReader(System.in));
- PrintWriter pw = new PrintWriter(new BufferedOutputStream(System.out));
- ArrayList<ArrayList<Integer>> sosedi = new ArrayList<>();
- int n = s.nextInt();
- int m = s.nextInt();
- for (int i = 0; i < n; i++) {
- sosedi.add(new ArrayList<>());
- }
- int k1, k2;
- for (int i = 0; i < m; i++) {
- k1 = s.nextInt();
- k2 = s.nextInt();
- sosedi.get(k1 - 1).add(k2 - 1);
- }
- int was[] = new int[n];
- Stack<Integer> road = new Stack<>();
- for (int j = 0; j < n; j++) {
- if (was[j] == 0) {
- road.push(j);
- was[j] = 1;
- while (!road.empty()) {
- boolean prov = true;
- for (int i = 0; i < sosedi.get(road.peek()).size(); i++) {
- if (was[sosedi.get(road.peek()).get(i)] == 0) {
- road.push(sosedi.get(road.peek()).get(i));
- was[road.peek()] = 1;
- prov = false;
- break;
- }
- if (was[sosedi.get(road.peek()).get(i)] == 1) {
- pw.println("YES");
- int t = sosedi.get(road.peek()).get(i);
- String answer = String.valueOf(sosedi.get(road.peek()).get(i) + 1);
- while (road.peek() != t) {
- answer = String.valueOf(road.pop() + 1) + " " + answer;
- }
- pw.print(answer);
- pw.close();
- System.exit(0);
- }
- }
- if (prov) {
- was[road.pop()] = 2;
- }
- }
- }
- }
- pw.print("NO");
- pw.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement