二分图:对于无向图,如果节点可以分成不想交的两部分,切对于每一条边,两个端点分别属于不同的部分;等价于用两种颜色给图着色,使每条边的两个端点颜色不同;
着色法判断二分图:(初始化color[]为)
bool bipartite(int u,int b){
for (int i=0; i<G[u].size(); i++){
int v = G[u][i];
if (bccno[v] != b) continue;
if (color[v] == color[u]) return false;
if (!color[v]){
color[v] = 3 - color[u];
if (!bipartite(v,b)) return false;
}
}
return true;
}