Cause of the changing of memory, this problem can be solved.
It’s about Bipartite Graph.
Problem in AcWing
Principle is if a pic is a bipartite graph just when there is no odd ring in.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Arrays;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static PrintWriter pw = new PrintWriter(System.out);
static int N = 100010, n, m;
static int h[] = new int[N << 1], e[] = new int[N << 1], ne[] = new int[N << 1], idx;
static int color[] = new int[N << 1];
public static void add(int a, int b) {
e[idx] = b;
ne[idx] = h[a];
h[a] = idx++;
}
public static void main(String[] args) throws IOException {
String[] s = br.readLine().split(" ");
n = Integer.parseInt(s[0]);
m = Integer.parseInt(s[1]);
Arrays.fill(h, -1);
for (int i = 0; i < m; i++) {
s = br.readLine().split(" ");
int a = Integer.parseInt(s[0]);
int b = Integer.parseInt(s[1]);
add(a, b);
add(b, a);
}
boolean flag = true;
for (int i = 1; i <= n; i++) {
if (color[i] == 0) {
if (!dfs(i, 1)) {
flag = false;
break;
}
}
}
if (!flag) pw.println("No");
else pw.println("Yes");
pw.flush();
br.close();
}
private static boolean dfs(int u, int c) {
color[u] = c;
for (int i = h[u]; i != -1; i = ne[i]) {
int j = e[i];
if (color[j] == 0) {
if (!dfs(j, 3 - c))
return false;
}
else if (color[j] == c) return false;
}
return true;
}
}