日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

POJ1523:SPF(无向连通图求割点)

發(fā)布時間:2024/4/13 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ1523:SPF(无向连通图求割点) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目:http://poj.org/problem?id=1523

題目解析:

注意題目輸入輸入,防止PE,題目就是求割點,并問割點將這個連通圖分成了幾個子圖,算是模版題吧。

#include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> #include <stack> #include <string> #define N 10010 using namespace std; struct node {int x,y,next; } eg[2*N]; int tt,head[N],dfn[N],low[N],ti,f[N]; void init() {memset(head,-1,sizeof(head));tt=0;ti=1;memset(dfn,0,sizeof(dfn));memset(f,0,sizeof(f)); } void add(int xx,int yy) {eg[tt].x=xx;eg[tt].y=yy;eg[tt].next=head[xx];head[xx]=tt++; } void tarjan(int u,int fa) {dfn[u]=low[u]=ti++;int child=0;for(int i=head[u]; i!=-1; i=eg[i].next){int v=eg[i].y;if(v==fa) continue;if(!dfn[v]){child++;tarjan(v,u);low[u]=min(low[u],low[v]);if(low[v]>=dfn[u]&&fa!=-1){f[u]++;}}else //無向圖沒有橫跨邊 {low[u]=min(dfn[v],low[u]);}}if(fa<0&&child>1) f[u]=child-1; } int main() {int xx,yy,u,v,K=0,z;while(scanf("%d",&u)!=EOF&&u){init();scanf("%d",&v);z=max(u,v);add(u,v);add(v,u);while(scanf("%d",&xx)!=EOF&&xx){scanf("%d",&yy);z=max(z,max(xx,yy));add(xx,yy);add(yy,xx);}tarjan(1,-1);printf("Network #%d\n",++K);int sum=0;for(int i=1; i<=z; i++){if(f[i]){sum++;printf(" SPF node %d leaves %d subnets\n",i,f[i]+1);}}if(sum==0)printf(" No SPF nodes\n");printf("\n");}return 0; }

?

總結(jié)

以上是生活随笔為你收集整理的POJ1523:SPF(无向连通图求割点)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。