Submission #4672371
Source Code Expand
import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Set;
import java.util.Random;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.StringTokenizer;
import java.io.BufferedReader;
import java.util.Collections;
import java.io.InputStream;
/**
* 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);
TaskC solver = new TaskC();
solver.solve(1, in, out);
out.close();
}
static class TaskC {
static List<TaskC.Vertex> curCycle = new ArrayList<>();
public void solve(int testNumber, InputReader in, PrintWriter out) {
TaskC.Vertex done = new TaskC.Vertex();
int n = in.nextInt();
int m = in.nextInt();
TaskC.Vertex[] vs = new TaskC.Vertex[n];
for (int i = 0; i < n; ++i) {
vs[i] = new TaskC.Vertex();
}
for (int i = 0; i < m; ++i) {
TaskC.Vertex a = vs[in.nextInt() - 1];
TaskC.Vertex b = vs[in.nextInt() - 1];
a.adjSeq.add(b);
b.adjSeq.add(a);
}
for (TaskC.Vertex v : vs)
if (v.adjSeq.size() % 2 != 0) {
out.println("No");
return;
}
long finish = System.currentTimeMillis() + 1500;
Random random = new Random(55413543513L);
List<TaskC.Vertex> vList = new ArrayList<>();
for (TaskC.Vertex v : vs) {
vList.add(v);
}
outer2:
while (System.currentTimeMillis() < finish) {
List<List<TaskC.Vertex>> cycles = new ArrayList<>();
for (TaskC.Vertex v : vs) {
v.adj.clear();
v.adj.addAll(v.adjSeq);
Collections.shuffle(v.adjSeq, random);
}
Collections.shuffle(vList, random);
outer:
for (int i = 0; i < 3; ++i) {
curCycle = new ArrayList<>();
for (TaskC.Vertex v : vList) v.state = 0;
for (TaskC.Vertex v : vList)
if (!v.adj.isEmpty()) {
if (v.removeCycle(null, done) != done) throw new RuntimeException();
cycles.add(curCycle);
continue outer;
}
break;
}
if (cycles.size() <= 1) {
out.println("No");
} else if (cycles.size() >= 3) {
out.println("Yes");
} else {
int bigDeg = 0;
for (TaskC.Vertex v : vList) {
if (v.adjSeq.size() > 2)
++bigDeg;
}
if (bigDeg >= 3) {
out.println("Yes");
} else {
out.println("No");
}
}
return;
}
out.println("No");
}
static class Vertex {
int state = 0;
Set<TaskC.Vertex> adj = new HashSet<>();
List<TaskC.Vertex> adjSeq = new ArrayList<>();
public TaskC.Vertex removeCycle(TaskC.Vertex parent, TaskC.Vertex done) {
state = 1;
for (TaskC.Vertex v : adjSeq)
if (v != parent && adj.contains(v)) {
if (v.state == 1) {
adj.remove(v);
v.adj.remove(this);
return v;
} else if (v.state == 0) {
TaskC.Vertex got = v.removeCycle(this, done);
if (got == done) {
return done;
}
if (got != null) {
adj.remove(v);
v.adj.remove(this);
curCycle.add(this);
if (got == this) return done;
else return got;
}
}
}
state = 2;
return null;
}
}
}
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 | C - Three Circuits |
| User | Petr |
| Language | Java8 (OpenJDK 1.8.0) |
| Score | 800 |
| Code Size | 5768 Byte |
| Status | AC |
| Exec Time | 786 ms |
| Memory | 106440 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 800 / 800 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | sample_01.txt, sample_02.txt, sample_03.txt |
| All | sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt, test_51.txt, test_52.txt, test_53.txt, test_54.txt, test_55.txt, test_56.txt, test_57.txt, test_58.txt, test_59.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| sample_01.txt | AC | 72 ms | 20052 KiB |
| sample_02.txt | AC | 72 ms | 20564 KiB |
| sample_03.txt | AC | 77 ms | 21972 KiB |
| test_01.txt | AC | 247 ms | 50636 KiB |
| test_02.txt | AC | 171 ms | 29924 KiB |
| test_03.txt | AC | 73 ms | 20052 KiB |
| test_04.txt | AC | 570 ms | 93992 KiB |
| test_05.txt | AC | 268 ms | 50736 KiB |
| test_06.txt | AC | 444 ms | 59228 KiB |
| test_07.txt | AC | 72 ms | 19924 KiB |
| test_08.txt | AC | 74 ms | 19156 KiB |
| test_09.txt | AC | 786 ms | 106440 KiB |
| test_10.txt | AC | 743 ms | 104956 KiB |
| test_11.txt | AC | 310 ms | 53472 KiB |
| test_12.txt | AC | 306 ms | 54136 KiB |
| test_13.txt | AC | 314 ms | 52172 KiB |
| test_14.txt | AC | 310 ms | 49108 KiB |
| test_15.txt | AC | 385 ms | 64760 KiB |
| test_16.txt | AC | 371 ms | 61504 KiB |
| test_17.txt | AC | 272 ms | 49180 KiB |
| test_18.txt | AC | 287 ms | 49720 KiB |
| test_19.txt | AC | 366 ms | 64388 KiB |
| test_20.txt | AC | 420 ms | 59824 KiB |
| test_21.txt | AC | 377 ms | 64620 KiB |
| test_22.txt | AC | 273 ms | 49956 KiB |
| test_23.txt | AC | 105 ms | 19668 KiB |
| test_24.txt | AC | 74 ms | 20308 KiB |
| test_25.txt | AC | 75 ms | 20820 KiB |
| test_26.txt | AC | 74 ms | 19284 KiB |
| test_27.txt | AC | 367 ms | 62808 KiB |
| test_28.txt | AC | 417 ms | 63660 KiB |
| test_29.txt | AC | 301 ms | 50736 KiB |
| test_30.txt | AC | 300 ms | 50296 KiB |
| test_31.txt | AC | 477 ms | 61904 KiB |
| test_32.txt | AC | 380 ms | 62328 KiB |
| test_33.txt | AC | 343 ms | 62016 KiB |
| test_34.txt | AC | 429 ms | 62240 KiB |
| test_35.txt | AC | 355 ms | 61824 KiB |
| test_36.txt | AC | 382 ms | 60316 KiB |
| test_37.txt | AC | 364 ms | 60348 KiB |
| test_38.txt | AC | 388 ms | 64528 KiB |
| test_39.txt | AC | 73 ms | 18516 KiB |
| test_40.txt | AC | 681 ms | 103224 KiB |
| test_41.txt | AC | 383 ms | 62168 KiB |
| test_42.txt | AC | 364 ms | 65296 KiB |
| test_43.txt | AC | 368 ms | 57816 KiB |
| test_44.txt | AC | 357 ms | 54696 KiB |
| test_45.txt | AC | 354 ms | 56656 KiB |
| test_46.txt | AC | 341 ms | 53764 KiB |
| test_47.txt | AC | 364 ms | 52452 KiB |
| test_48.txt | AC | 357 ms | 57156 KiB |
| test_49.txt | AC | 386 ms | 55672 KiB |
| test_50.txt | AC | 366 ms | 56680 KiB |
| test_51.txt | AC | 336 ms | 54588 KiB |
| test_52.txt | AC | 349 ms | 56076 KiB |
| test_53.txt | AC | 172 ms | 37460 KiB |
| test_54.txt | AC | 205 ms | 49248 KiB |
| test_55.txt | AC | 215 ms | 40604 KiB |
| test_56.txt | AC | 185 ms | 32872 KiB |
| test_57.txt | AC | 208 ms | 41848 KiB |
| test_58.txt | AC | 186 ms | 38952 KiB |
| test_59.txt | AC | 213 ms | 40616 KiB |