二分图 定义:如果能将一个图的节点集合分割成两个独立的子集 A 和 B ,并使图中的每一条边的两个节点一个来自 A 集合,一个来自 B 集合,就将这个图称为 二分图 。
var isBipartite = function (arr) {
var flag = true;
var n = arr.length;
var crr = new Array(n).fill(false);
var brr = new Array(n).fill(false);
for (var i = 0; i < n; i++) {
if (!brr[i]) {
f(arr, i);
}
}
return flag;
function f(arr,v){
if (!flag) return;
brr[v] = true;
for (var k of arr[v]) {
if (!brr[k]) {
crr[k] = !crr[v];
f(arr, k);
} else {
if (crr[k] == crr[v]) {
flag = false;
}
}
}
}
};