我必须编写一个程序来检查图表是否为二分图。我已经做到了,但在某些测试用例中失败了。我认为这种情况正在发生,因为我没有跟踪被访问的节点。我包括我的代码。任何人都可以帮忙解决这个问题吗?
static boolean isBipartite(int G[][],int src,int V)
{
int colorArr[] = new int[V];
for (int i=0; i<V; ++i)
colorArr[i] = -1;
colorArr[src] = 1;
LinkedList<Integer>q = new LinkedList<Integer>();
q.add(src);
while (q.size() != 0)
{
int u = q.poll();
for (int v=0; v<V; ++v)
{
if (G[u][v]==1 && colorArr[v]==-1)
{
colorArr[v] = 1-colorArr[u];
q.add(v);
}
else if (G[u][v]==1 && colorArr[v]==colorArr[u])
return false;
}
}
return true;
}