判断二分图方法:用染色法,把图中的点染成黑色和白色。
首先取一个点染成白色,然后将其相邻的点染成黑色,如果发现有相邻且同色的点,那么就退出,可知这个图并非二分图。
int istwo(int u) { queue<int> E; mem(vis, -1); E.push(u); vis[u] = 1; while(!E.empty()) { u = E.front(); E.pop(); for(int i=0; i<G[u].size(); i++) { int v = G[u][i]; if(vis[v] == -1) { if(vis[u] == 1) vis[v] = 0; else vis[v] = 1; E.push(v); } else if(vis[v] == vis[u]) return 0; } } return 1; } int main() { istwo(1); }
原文地址:https://www.cnblogs.com/WTSRUVF/p/9309618.html
时间: 2024-11-09 05:44:01