CSES - KILO 2017 5/5 - Results
Submission details
Task:Brexit
Sender:Viljamin opetuslapset
Submission time:2017-10-03 18:39:26 +0300
Language:Java
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.13 sdetails
#2ACCEPTED0.12 sdetails
#3ACCEPTED0.14 sdetails
#4ACCEPTED0.14 sdetails
#5ACCEPTED0.14 sdetails
#6ACCEPTED0.12 sdetails
#7ACCEPTED0.13 sdetails
#8ACCEPTED0.14 sdetails
#9ACCEPTED0.11 sdetails
#10ACCEPTED0.12 sdetails
#11ACCEPTED0.15 sdetails
#12ACCEPTED0.13 sdetails
#13ACCEPTED0.14 sdetails
#14ACCEPTED0.16 sdetails
#15ACCEPTED0.18 sdetails
#16ACCEPTED0.13 sdetails
#17ACCEPTED1.25 sdetails
#18ACCEPTED1.02 sdetails
#19ACCEPTED1.15 sdetails
#20ACCEPTED0.68 sdetails
#21ACCEPTED0.31 sdetails
#22ACCEPTED0.48 sdetails
#23ACCEPTED0.29 sdetails
#24ACCEPTED0.38 sdetails
#25ACCEPTED1.48 sdetails
#26ACCEPTED1.48 sdetails
#27ACCEPTED1.34 sdetails
#28ACCEPTED0.99 sdetails
#29ACCEPTED1.21 sdetails
#30ACCEPTED0.97 sdetails
#31ACCEPTED1.03 sdetails
#32ACCEPTED0.95 sdetails
#33ACCEPTED1.12 sdetails
#34ACCEPTED1.13 sdetails
#35ACCEPTED1.36 sdetails

Code

import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Deque;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Stack;

public class Main {

    public static void main(String[] args) {
        IO io = new IO();
        int solmujenMaara = io.nextInt();
        int yhteyksienMaara = io.nextInt();
        int kotimaa = io.nextInt();
        int lahtija = io.nextInt();
        HashMap<Integer, Solmu> solmut = new HashMap<>();

        for (int i = 1; i <= solmujenMaara; i++) {
            solmut.put(i, new Solmu(i));
        }

        for (int i = 0; i < yhteyksienMaara; i++) {
            Solmu solmu1 = solmut.get(io.nextInt());
            Solmu solmu2 = solmut.get(io.nextInt());

            solmu1.addNeighbor(solmu2);
            solmu2.addNeighbor(solmu1);

        }

        solmut.get(kotimaa).setLahtija(true);
        solmut.get(lahtija).poistu();

        System.out.println(solmut.get(kotimaa).poistettu ? "leave" : "stay");

        io.close();
    }
}

class Solmu {

    int origneighbours;
    HashMap<Integer, Solmu> neighbours;
    boolean poistettu;
    int name;
    boolean target;
//    private int neigbours;

    public Solmu(int name) {
        this.name = name;
        neighbours = new HashMap<>();
        origneighbours = 0;
        poistettu = false;
        target = false;
    }

    public void addNeighbor(Solmu n) {
        neighbours.put(n.name, n);
        origneighbours++;
    }

    public boolean poistunko() {
        return (1.0 * neighbours.size() / origneighbours) <= 0.5;
    }

    public void poistu() {
        if (poistettu) {
            return;
        }
        poistettu = true;
        if (target) {
            return;
        }
        Stack<Solmu> moipitaamenna = new Stack<>();

        for (Solmu s : neighbours.values()) {
            if (s.poistettu) {
                continue;
            }
//            neighbours.remove(s);
            moipitaamenna.add(s);
        }
        neighbours.clear();
        while (!moipitaamenna.empty()) {
            moipitaamenna.pop().deleteNeighbor(this);
        }

    }

    public void deleteNeighbor(Solmu n) {
        neighbours.remove(n.name);
        if (poistunko()) {
            poistu();
        }
    }

    public void setLahtija(boolean l) {
        target = l;
    }

}

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