二分图
二分图
-
[定义~]
二分图又称作二部图,是图论中的一种特殊模型。 设
是一个无向图,如果顶点V可分割为两个互不相交的子集
,并且图中的每条边
所关联的两个顶点i和j分别属于这两个不同的顶点集
,则称图G为一个二分图。
说人话就是这个图可以分成男女两部分,男男不接受,女女不接受,只有男女连边才是二分图 -
[判定~]
二分图嘛,左边的连点一定都是右边嘛,给左边的点染成
色,右边点染成
色,就可以判断了,我从起点开始,遍历每个点,如果相邻的点是和当前的点是相同的
,这就不是二分图~
int color[];
bool ok;
void Get_color(int pos,int co){
if(ok) return false;
color[pos]=co;
for(int i=Head[pos];i;i=Edge[i].Next){
int v=Edge[i].To;
if(color[v]==0) Get_color(v,co^1);
else if(color[v]==co){
ok=1;
return ;
}
}
}
bool pan(){
for(int i=1;i<=n;i++){
if(color[i]==0) Get_color(i);
if(ok) return false;
}
return true;
}