检查图表是否为二分图

时间:2016-09-07 17:41:05

标签: java graph

我必须编写一个程序来检查图表是否为二分图。我已经做到了,但在某些测试用例中失败了。我认为这种情况正在发生,因为我没有跟踪被访问的节点。我包括我的代码。任何人都可以帮忙解决这个问题吗?

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;
}

0 个答案:

没有答案