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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

无向图强联通分量-洛谷 P2860 [USACO06JAN]冗余路径Redundant Paths

發布時間:2024/9/5 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 无向图强联通分量-洛谷 P2860 [USACO06JAN]冗余路径Redundant Paths 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

https://www.luogu.org/problem/show?pid=2860
這個就是無向圖的強聯通;
有向圖的兩點再一個分量里,是x可以到y,y也可到x;
但無向圖本來就是雙向的,所以我們再dfs的時候不能直接訪問其親爹;
這樣的話,x,y有兩條及以上的無共邊的路徑(就是環),那他們在一個強連通分量里面;

這里{1}{2345}是兩個強連通分量;
在這題目里,就是讓我們求要添幾條變,可以讓原圖變成一個強連通分量;
那我們先把原圖搞一下縮點,無向圖縮點后必然會變成一顆樹;
樹上所有點都互相聯通但是無環;
樹上必然會產生只有一個兒子的節點;
我們把這些點找出來;
然后以他們為葉子節點弄一個樹;
很顯然我們只有把這些葉子節點互相連邊,就可以形成很多環;
設有N個葉子節點,那我們最少要連(n+1)/2個;
及答案。
為什么?,畫畫圖吧,可以用樹的基本特征口胡的;

#include<cstdio>//cfb #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<map> using namespace std; struct cs{ int to,next; }a[20001]; int head[5001],low[5001],tt[5001],q[5001],lin[5001],cc[10001][2],sum[5001]; bool in[5001],f[5001][5001];//f用來判重 int ll,n,m,x,y,z,t,nn,CC,aa,bb,ans,mm; void init(int x,int y){ a[++ll].to=y; a[ll].next=head[x]; head[x]=ll; } void dfs(int x,int y){ tt[x]=++t; low[x]=t; q[++q[0]]=x; in[x]=1; for(int k=head[x];k;k=a[k].next) if(a[k].to!=y){//不回溯親爹 if(!tt[a[k].to])dfs(a[k].to,x); if(in[a[k].to])low[x]=min(low[x],low[a[k].to]); } if(low[x]==tt[x]){ nn++; while(1){ in[q[q[0]]]=0; lin[q[q[0]]]=nn; q[0]--; if(q[q[0]+1]==x)break; } } } int main() { scanf("%d%d",&n,&m); for(int i=1;i<=m;i++){ scanf("%d%d",&x,&y); if(!f[x][y])mm++;else continue; f[x][y]=f[y][x]=1; init(x,y); init(y,x); cc[mm][0]=x;cc[mm][1]=y; } for(int i=1;i<=n;i++)if(!tt[i])dfs(i,-1); for(int i=1;i<=mm;i++){ x=cc[i][0];y=cc[i][1]; if(lin[x]==lin[y])continue; sum[lin[x]]++; sum[lin[y]]++;//統計每個點有幾個兒子 } for(int i=1;i<=nn;i++)if(sum[i]==1)ans++; printf("%d",(ans+1)/2); }

轉載于:https://www.cnblogs.com/largecube233/p/6797933.html

總結

以上是生活随笔為你收集整理的无向图强联通分量-洛谷 P2860 [USACO06JAN]冗余路径Redundant Paths的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。