求无向图中的割边(桥)

 1 inline void tarjan(int x,int edge) {
 2     int v;
 3     dfn[x] = low[x] = ++tot;
 4     for(int i = head[x];i != -1; i = e[i].next) {
 5         v = e[i].to;
 6         if(!dfn[v]) {
 7             tarjan(v,i);
 8             low[x] = min(low[x],low[v]);
 9             if(low[v] > dfn[x])
10                 bridge[i] = bridge[i^1] = true;
11         }
12         else if(i != edge)
13                 low[x] = min(low[x],dfn[v]);
14     }
15 }

猜你喜欢

转载自www.cnblogs.com/lipeiyi520/p/11484901.html