我今天学习了Cut Vertices and Bridges算法,并通过解决Spoj和Codechef的几个基本问题立即对它们进行测试。我在两个评分者上提交的两个代码都给出了相同的运行时错误 - NZEC(非零退出代码)
其中一个问题是SPOJ上的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错误的原因是什么?
答案 0 :(得分:0)
我使用DFS尝试了这个问题,也就是说,在淹没了我们可以达到的城市群数之后,最初所有城市都是连通的,所以群组的总数将是1,但如果淹没了一个点之后,城市的任何一部分断开将导致多个组,因此,我们将计数器增加1。 在淹没每个点之后重复此迭代,以获得结果。这种方法为我带来了TLE。