二分图(染色法)
import java.io.BufferedReader;import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
static int n , m ,idx;
static int N = 2000010;
static int [] e = new int;
static int [] ne = new int;
static int [] h = new int;
//当前的颜色 0 1 2
static int [] color = new int;
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String[] s = bf.readLine().split(" ");
n = Integer.parseInt(s);
m = Integer.parseInt(s);
Arrays.fill(h,-1);
while (m-- > 0){
String[] res = bf.readLine().split(" ");
int a = Integer.parseInt(res);
int b = Integer.parseInt(res);
//无向图,两条边
add(a,b);
add(b,a);
}
boolean flag = true;
for(int i = 1;i<=n;i++){
//如果当前的color没被用过,进入dfs
if (color==0){
//从当前的点去染1
boolean rs = dfs(i,1);
//如果返回的是false 直接输出false了
if (!rs){
flag = false;
break;
}
}
}
if (flag){
System.out.println("Yes");
}else {
System.out.println("No");
}
}
private static boolean dfs(int curNode, int c) {
//首先设置好当前的颜色
color = c;
//开始循环遍历
for(int i = h;i!=-1;i = ne){
int next = e;
//如果当前的color是0 表示没有访问过
if (color==0){
//如果是1 下次进入dfs的是2; 反之亦然,确实很巧妙
if (!dfs(next,3-c)){
return false;
}
//如果当前颜色和传进来的颜色相同的话,也是false
}elseif (color==c){
return false;
}
}
return true;
}
private static void add(int a, int b) {
e= b;
ne = h;
h = idx++;
}
} 這java看起來就好像是加了花括號的python。
我有一個想法:
以後是不是可以一鍵將Java轉成python,
或者是一鍵將python轉成Java。 列明 发表于 2021-1-8 22:27
這java看起來就好像是加了花括號的python。
我有一個想法:
以後是不是可以一鍵將Java轉成python,
我记得有一个python的库,可以直接在Python里面使用Java代码 mark,研究研究 列明 发表于 2021-1-8 22:27
這java看起來就好像是加了花括號的python。
我有一個想法:
以後是不是可以一鍵將Java轉成python,
哈哈,我还没有看见有这种软件
页:
[1]