class Solution {
private boolean[] visited;
private int []colors;
private int [][]graph;
public boolean isBipartite(int[][] graph) {
this.graph=graph;
int V =graph.length;
visited=new boolean[V];
colors=new int[V];
for(int v=0;v<V;v++)
{
if(!visited[v])
{
if(!dfs(v,0))
{
return false;
}
}
}
return true;
}
private boolean dfs(int v,int color)
{
visited[v]=true;
colors[v]=color;
for(int w:graph[v])
{
if(!visited[w])
{
if(!dfs(w,1-color))
return false;
}
else
{
if(colors[v]==colors[w])
{
return false;
}
}
}
return true;
}
}
LeetCode:785.判断二分图
最新推荐文章于 2025-10-19 20:39:10 发布
本文深入探讨了二分图的判定算法,通过深度优先搜索(DFS)实现,确保图中任意两个相邻节点颜色不同,以此判断图是否可以被划分为两组完全不相连的子集。代码详细展示了如何使用布尔数组标记已访问节点,以及如何用整数数组为节点分配颜色。
825

被折叠的 条评论
为什么被折叠?



