生活随笔
收集整理的這篇文章主要介紹了
割点和割边
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
<span?style="font-size:14px;">struct?node?? {?? ????int?y,pre,i;//增加一個(gè)i是考慮重邊的情況的??? };?? node?a[N];?? int?pre[N],sign[N];?? int?dfn[N],low[N];?? int?tot,lenn;?? int?n,m,len;?? void?init()?? {?? ????memset(pre,-1,sizeof(pre));?? ????memset(sign,false,sizeof(sign));?? ????len=1;tot=1;?? }?? void?addpage(int?s,int?t,int?i)?? {?? ????a[len].y=t;?? ????a[len].pre=pre[s];?? ????a[len].i=i;?? ????pre[s]=len++;?? }?? void?dfs(int?x,int?s)?? {?? ????dfn[x]=low[x]=tot++;?? ????sign[x]=true;?? ????for(int?i=pre[x];?i!=-1;?i=a[i].pre)?? ????{?? ????????int?y=a[i].y;?? ????????if(a[i].i==s)?continue;?? ????????if(!sign[y])??? ????????{?? ????????????dfs(y,a[i].i);?? ????????????low[x]=min(low[x],low[y]);?? ????????}?? ????????else?low[x]=min(low[x],low[y]);?? ????}?? ?? }?? int?main()?? {??? ?????? ????init();?? ????repf(i,1,n)?? ????????if(!sign[i])?? ????dfs(i,-1);//其中-1是代表的邊的??? ???return?0;?? }?? ?對(duì)于邊x~y,如果low[x]>dfn[y]||low[y]>dfn[x]即為割邊?? 對(duì)于點(diǎn)u是圖的割點(diǎn)當(dāng)切僅當(dāng)u存在一個(gè)字節(jié)點(diǎn)v.使得low[v]>=dfn[u]</span>?
總結(jié)
以上是生活随笔為你收集整理的割点和割边的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。