Submission #1093587


Source Code Expand

import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.List;
import java.util.StringTokenizer;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.InputStream;
import java.util.ArrayList;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        InputReader in = new InputReader(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        TaskF solver = new TaskF();
        solver.solve(1, in, out);
        out.close();
    }

    static class TaskF {
        public void solve(int testNumber, InputReader in, PrintWriter out) {
            int n = in.nextInt();
            TaskF.Vertex[] vs = new TaskF.Vertex[n];
            for (int i = 0; i < n; ++i) vs[i] = new TaskF.Vertex(in.nextInt());
            for (int i = 0; i < n - 1; ++i) {
                TaskF.Vertex a = vs[in.nextInt() - 1];
                TaskF.Vertex b = vs[in.nextInt() - 1];
                a.adj.add(b);
                b.adj.add(a);
            }
            boolean first = true;
            for (int i = 0; i < n; ++i)
                if (vs[i].solve() == 1) {
                    if (first) first = false;
                    else out.print(" ");
                    out.print(i + 1);
                }
            out.println();
        }

        static class Vertex {
            int stones;
            List<TaskF.Vertex> adj = new ArrayList<>();
            int answer = 0;

            public Vertex(int stones) {
                this.stones = stones;
            }

            public int solve() {
                if (answer == -1) throw new RuntimeException();
                if (answer > 0) return answer;
                answer = -1;
                for (TaskF.Vertex v : adj)
                    if (v.stones < stones) {
                        int got = v.solve();
                        if (got == 2) {
                            answer = 1;
                            return answer;
                        }
                    }
                answer = 2;
                return answer;
            }

        }

    }

    static class InputReader {
        public BufferedReader reader;
        public StringTokenizer tokenizer;

        public InputReader(InputStream stream) {
            reader = new BufferedReader(new InputStreamReader(stream), 32768);
            tokenizer = null;
        }

        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }

    }
}

Submission Info

Submission Time
Task F - Tree Game
User Petr
Language Java8 (OpenJDK 1.8.0)
Score 1600
Code Size 3211 Byte
Status AC
Exec Time 160 ms
Memory 11216 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1600 / 1600
Status
AC × 3
AC × 53
Set Name Test Cases
Sample sample1.txt, sample2.txt, sample3.txt
All sample1.txt, sample2.txt, sample3.txt, in1.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in2.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in29.txt, in3.txt, in30.txt, in31.txt, in32.txt, in33.txt, in34.txt, in35.txt, in36.txt, in37.txt, in38.txt, in39.txt, in4.txt, in40.txt, in41.txt, in42.txt, in43.txt, in44.txt, in45.txt, in46.txt, in47.txt, in48.txt, in49.txt, in5.txt, in50.txt, in6.txt, in7.txt, in8.txt, in9.txt
Case Name Status Exec Time Memory
in1.txt AC 140 ms 10708 KB
in10.txt AC 149 ms 10964 KB
in11.txt AC 150 ms 10708 KB
in12.txt AC 126 ms 9164 KB
in13.txt AC 130 ms 9292 KB
in14.txt AC 144 ms 10960 KB
in15.txt AC 160 ms 11212 KB
in16.txt AC 154 ms 10832 KB
in17.txt AC 155 ms 10704 KB
in18.txt AC 148 ms 10704 KB
in19.txt AC 141 ms 10576 KB
in2.txt AC 156 ms 10708 KB
in20.txt AC 144 ms 10960 KB
in21.txt AC 145 ms 10832 KB
in22.txt AC 141 ms 10960 KB
in23.txt AC 146 ms 10964 KB
in24.txt AC 145 ms 10960 KB
in25.txt AC 156 ms 11104 KB
in26.txt AC 156 ms 11092 KB
in27.txt AC 158 ms 11216 KB
in28.txt AC 146 ms 10956 KB
in29.txt AC 144 ms 10960 KB
in3.txt AC 138 ms 10708 KB
in30.txt AC 145 ms 10960 KB
in31.txt AC 153 ms 10960 KB
in32.txt AC 134 ms 10580 KB
in33.txt AC 149 ms 10704 KB
in34.txt AC 144 ms 10704 KB
in35.txt AC 152 ms 11216 KB
in36.txt AC 96 ms 8532 KB
in37.txt AC 96 ms 8404 KB
in38.txt AC 101 ms 8400 KB
in39.txt AC 95 ms 8400 KB
in4.txt AC 144 ms 10960 KB
in40.txt AC 146 ms 10320 KB
in41.txt AC 145 ms 10196 KB
in42.txt AC 140 ms 10068 KB
in43.txt AC 144 ms 10064 KB
in44.txt AC 133 ms 10192 KB
in45.txt AC 139 ms 10192 KB
in46.txt AC 134 ms 10068 KB
in47.txt AC 133 ms 10192 KB
in48.txt AC 142 ms 10192 KB
in49.txt AC 149 ms 10448 KB
in5.txt AC 133 ms 10192 KB
in50.txt AC 133 ms 10192 KB
in6.txt AC 152 ms 10704 KB
in7.txt AC 148 ms 10960 KB
in8.txt AC 155 ms 10832 KB
in9.txt AC 151 ms 10704 KB
sample1.txt AC 98 ms 8400 KB
sample2.txt AC 97 ms 8400 KB
sample3.txt AC 98 ms 8400 KB