给定一个图 G 和 3 个顶点 a、b 和 c,在线性时间内验证从 a 开始并通过 b 的所有无限路径在到达 b 之前必然也从顶点 c 经过 如果只有顶点 c 在之前出现,则算法返回 True B 沿着从 a 开始到 b 的无限路径
我试图实现一个解决方案,但我不确定我以 3 种方式为图的节点着色黑色(n),白色(b),灰色(g)
ALGO(G,a,b,c)
init(G);
color[c]=n;
DFS_Visit(G,a);
ret=true;
if(color[b]=n)then
init(G);
ret=DFS_VisitMod(G,b);
return ret;
init(G)
for each v in V do
color[v]=b;
DFS_VisitMod(G,a)
color[a]=g;
for each v in adj(a) do
if(color[v]=b)then
ret=DFS_VisitMod(G,v);
if(ret=false)then
return false;
else if(color[v]=g)then
return false;
color[a]=n;
return true;