非零退出代码错误 - 关节点 - SPOJ淹没

时间:2015-03-22 11:40:06

标签: java graph runtime-error

我今天学习了Cut Vertices and Bridges算法,并通过解决Spoj和Codechef的几个基本问​​题立即对它们进行测试。我在两个评分者上提交的两个代码都给出了相同的运行时错误 - NZEC(非零退出代码)

其中一个问题是SPOJ上的Submerging Islands

我们需要在图表中打印清晰点的数量。 这是我的代码:

Submerging Islands

它似乎适用于我能想到的所有可能的输入,但给出了相同的NZEC错误。我试图在过去五个小时内调试我的代码,但都失败了。使用的内存对我来说似乎很好,我认为没有任何异常发生的可能性。我的代码出现NZEC错误的原因是什么?

我尝试调试并测试我的代码以找出bug的位置,它似乎位于dfs函数中,这对于两个代码都是通用的。这是dfs函数:

static void dfs (int u , boolean isRoot)
{
    int child=0;
    visited[u]=1;
    disc[u]=++time;
    low[u]=disc[u];
    int sz = map.get(u).size();
    for(int i=0;i<sz;i++)
    {
        int v = map.get(u).get(i);
        if(visited[v]!=1)
        {
            child++;
            parent[v]=u;
            dfs(v,false);
            // Check if the subtree rooted with v has a connection to one of the ancestors of u
            low[u]  = Math.min(low[u],low[v]);
            // u is an articulation point in following cases
            // (1) u is root of DFS tree and has two or more chilren.
            if (isRoot&& child>=2)
                ap[u]=1;
            // (2) If u is not root and low value of one of its child is more
            // than discovery value of u.
            if ( !isRoot && low[v] >= disc[u])
                ap[u]=1;
        }
        else if (v != parent[u])
            low[u]  = Math.min(low[u], disc[v]);
    }
}

NZEC错误的原因是什么?

1 个答案:

答案 0 :(得分:0)

我使用DFS尝试了这个问题,也就是说,在淹没了我们可以达到的城市群数之后,最初所有城市都是连通的,所以群组的总数将是1,但如果淹没了一个点之后,城市的任何一部分断开将导致多个组,因此,我们将计数器增加1。 在淹没每个点之后重复此迭代,以获得结果。这种方法为我带来了TLE。