CSES - KILO 2017 5/5 - Results
Submission details
Task:Brexit
Sender:Koodi Ilolle
Submission time:2017-10-03 18:29:58 +0300
Language:Java
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.11 sdetails
#2ACCEPTED0.14 sdetails
#3ACCEPTED0.13 sdetails
#4ACCEPTED0.16 sdetails
#5ACCEPTED0.12 sdetails
#6ACCEPTED0.12 sdetails
#7ACCEPTED0.14 sdetails
#8ACCEPTED0.16 sdetails
#9ACCEPTED0.13 sdetails
#10ACCEPTED0.16 sdetails
#11ACCEPTED0.13 sdetails
#12ACCEPTED0.17 sdetails
#13ACCEPTED0.11 sdetails
#14ACCEPTED0.12 sdetails
#15ACCEPTED0.17 sdetails
#16ACCEPTED0.14 sdetails
#17ACCEPTED0.43 sdetails
#18ACCEPTED0.42 sdetails
#19ACCEPTED0.38 sdetails
#20ACCEPTED0.34 sdetails
#21ACCEPTED0.22 sdetails
#22ACCEPTED0.28 sdetails
#23ACCEPTED0.20 sdetails
#24ACCEPTED0.24 sdetails
#25ACCEPTED0.43 sdetails
#26ACCEPTED0.56 sdetails
#27ACCEPTED0.56 sdetails
#28ACCEPTED0.54 sdetails
#29ACCEPTED0.38 sdetails
#30ACCEPTED0.42 sdetails
#31ACCEPTED0.38 sdetails
#32ACCEPTED0.42 sdetails
#33ACCEPTED0.40 sdetails
#34ACCEPTED0.38 sdetails
#35ACCEPTED1.17 sdetails

Code

import java.util.ArrayList;
import java.util.Arrays;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author ahuotala
 */
public class Brexit {
    static ArrayList<Integer>[] list;
    static boolean[] left;
    static int[] limits;
    static int[] neighbours;

    // Eispä
    public static void main(String[] args) {
        IO io = new IO();
        int countries = io.nextInt();
        int connections = io.nextInt();
        int home = io.nextInt();
        int firstToLeave = io.nextInt();
        list = new ArrayList[countries + 1];
        for (int i = 0; i < connections; i++) {
            int n = io.nextInt();
            int m = io.nextInt();
            if (list[n] == null) {
                list[n] = new ArrayList();
            }
            if (list[m] == null) {
                list[m] = new ArrayList();
            }
            list[n].add(m);
            list[m].add(n);
        }

        left = new boolean[countries + 1];
        limits = new int[countries + 1];
        neighbours = new int[countries + 1];
        for (int i = 1; i < limits.length; i++) {
            limits[i] = list[i].size() / 2;
            neighbours[i] = list[i].size();
        }
        dfs(firstToLeave);
        neighbours[firstToLeave]--;
        io.println(left[home] ? "leave" : "stay");
        io.close();
    }
    
    private static void dfs(int n) {
        left[n] = true;
        for (Integer neighbour : list[n]) {
            // does neighbour leave?
            if (!left[neighbour] && neighbourLeftIleave(n, neighbour)) {
                dfs(neighbour);
            }
        }
    }
    
    private static boolean neighbourLeftIleave(int didLeave, int checkLeave) {
        neighbours[checkLeave]--;
        if (neighbours[checkLeave] <= limits[checkLeave]) {
            left[checkLeave] = true;
            return true;
        }
        return false;
    }

}

Test details

Test 1

Verdict: ACCEPTED

input
4 4 4 1
1 2
1 3
2 3
3 4

correct output
leave

user output
leave

Test 2

Verdict: ACCEPTED

input
8 11 4 7
1 4
1 6
4 6
1 8
...

correct output
stay

user output
stay

Test 3

Verdict: ACCEPTED

input
8 8 8 1
1 2
1 3
2 4
3 5
...

correct output
leave

user output
leave

Test 4

Verdict: ACCEPTED

input
7 8 7 1
1 2
1 3
1 7
2 4
...

correct output
leave

user output
leave

Test 5

Verdict: ACCEPTED

input
8 10 5 1
1 2
1 3
1 7
2 4
...

correct output
leave

user output
leave

Test 6

Verdict: ACCEPTED

input
14 36 11 1
1 2
1 3
1 4
1 5
...

correct output
stay

user output
stay

Test 7

Verdict: ACCEPTED

input
14 35 11 1
1 2
1 3
1 4
1 5
...

correct output
leave

user output
leave

Test 8

Verdict: ACCEPTED

input
17 30 8 11
1 2
2 3
3 4
4 5
...

correct output
leave

user output
leave

Test 9

Verdict: ACCEPTED

input
4 2 3 1
1 3
2 4

correct output
leave

user output
leave

Test 10

Verdict: ACCEPTED

input
4 2 2 4
1 4
2 3

correct output
stay

user output
stay

Test 11

Verdict: ACCEPTED

input
20 19 6 17
1 19
8 9
16 18
4 5
...

correct output
leave

user output
leave

Test 12

Verdict: ACCEPTED

input
2 1 2 1
1 2

correct output
leave

user output
leave

Test 13

Verdict: ACCEPTED

input
2 1 1 1
1 2

correct output
leave

user output
leave

Test 14

Verdict: ACCEPTED

input
8 9 8 1
1 2
1 3
1 4
2 5
...

correct output
stay

user output
stay

Test 15

Verdict: ACCEPTED

input
2297 2679 1051 742
617 742
694 1379
156 742
36 531
...

correct output
stay

user output
stay

Test 16

Verdict: ACCEPTED

input
9 36 3 3
1 2
1 3
1 4
1 5
...

correct output
leave

user output
leave

Test 17

Verdict: ACCEPTED

input
150670 300000 64138 127023
50117 131948
138058 140437
80088 113710
1091 149845
...

correct output
leave

user output
leave

Test 18

Verdict: ACCEPTED

input
75351 299756 67121 54519
13237 54519
21423 29557
45590 57906
27901 54519
...

correct output
leave

user output
leave

Test 19

Verdict: ACCEPTED

input
75351 299755 66319 71133
70626 71133
9534 30979
52767 59421
3512 62528
...

correct output
stay

user output
stay

Test 20

Verdict: ACCEPTED

input
100000 100000 1 100000
1 2
2 3
3 4
4 5
...

correct output
leave

user output
leave

Test 21

Verdict: ACCEPTED

input
100000 99999 1 100000
1 2
1 3
1 4
1 5
...

correct output
stay

user output
stay

Test 22

Verdict: ACCEPTED

input
100000 99999 100000 1
1 2
1 3
1 4
1 5
...

correct output
leave

user output
leave

Test 23

Verdict: ACCEPTED

input
623 100000 201 369
1 2
2 3
1 3
2 4
...

correct output
stay

user output
stay

Test 24

Verdict: ACCEPTED

input
10007 100000 8980 3955
1 2
2 3
3 4
4 5
...

correct output
stay

user output
stay

Test 25

Verdict: ACCEPTED

input
200000 300000 98405 200000
91091 107131
187868 200000
169168 200000
107283 200000
...

correct output
leave

user output
leave

Test 26

Verdict: ACCEPTED

input
200000 200003 36335 152343
118063 160421
103074 184863
39554 133784
111165 151835
...

correct output
stay

user output
stay

Test 27

Verdict: ACCEPTED

input
200000 200003 36335 152343
118063 160421
103074 184863
39554 133784
111165 151835
...

correct output
leave

user output
leave

Test 28

Verdict: ACCEPTED

input
200000 199995 48807 188921
125668 137213
58484 92270
149853 172371
147281 183987
...

correct output
stay

user output
stay

Test 29

Verdict: ACCEPTED

input
150003 300000 5769 81807
1701 81807
67930 81807
95197 101956
8464 95197
...

correct output
stay

user output
stay

Test 30

Verdict: ACCEPTED

input
150003 300000 113708 52542
20542 140674
113708 118110
53131 140674
106124 140674
...

correct output
leave

user output
leave

Test 31

Verdict: ACCEPTED

input
150002 299998 108658 134482
7967 120234
7967 69327
4545 7967
48480 134482
...

correct output
leave

user output
leave

Test 32

Verdict: ACCEPTED

input
150002 299998 111144 48353
29987 48353
48353 80095
75893 89146
88333 111144
...

correct output
stay

user output
stay

Test 33

Verdict: ACCEPTED

input
199999 299996 111739 12359
173419 189883
35930 189883
72825 189883
175798 189883
...

correct output
leave

user output
leave

Test 34

Verdict: ACCEPTED

input
200000 299997 24068 147603
15273 189931
57932 189931
147603 188966
36101 147603
...

correct output
stay

user output
stay

Test 35

Verdict: ACCEPTED

input
200000 199999 182498 116219
59555 62379
33156 181870
103953 174756
101778 110925
...

correct output
leave

user output
leave