请教一下tarjan中的问题
void add(int aa, int bb)//邻接表{
b[++cnt].e = bb;
b[cnt].next = hh[aa];
hh[aa] = cnt;
}
int tarjan(int k)
{
int i;
dfn[k] = low[k] = ++number;
stack[++top] = k;
d[k] = true;
for(i = hh[k]; i != 0; i = b[i].next)
{
if(!dfn[b[i].e])
{
tarjan(b[i].e);
low[k] = min(low[k], low[b[i].e]);//请教一下这行代码写的意思
}
else if(d[b[i].e] == true)
{
low[k] = min(low[k], dfn[b[i].e]);
//我想问一下能不能写成low[k]=min(low[k],low[b[i].e]);顺便讲一下这行代码的意思。
}
}
if(dfn[k] == low[k])
{
color[k] = ++num;
while(1)
{
p[num]++;
d[stack[top]] = false;
color[stack[top--]] = num;
if(stack[top + 1] == k)break;
}
}
return 0;
}
发现网上好多博客之类的都没打这两行的注释。。。
[此贴子已经被作者于2016-9-16 17:48编辑过]