hdu4496 求連通分量個數

2021-06-20 07:29:57 字數 689 閱讀 6732

題意:題意可以轉化為:不斷給乙個圖加有邊,問每次加邊後圖的連通分圖有多少個。

解法:裸的並查集,開始時n個點各自屬於乙個連通分量。每次加邊都有可能將兩個聯通分量連起來,也有可能是在乙個聯通分量加了一條邊。主要就是判斷加邊的兩個點的根父母是否是同乙個點,若是則兩點屬於同乙個連通分量,否則就是兩個聯通分量,這時連通分量數就會減一。

**:#include #include #include #include using namespace std;

int parent[100100];

int getparent(int k)

int n,m;

struct point

points[100010];

vectorvec;

int rem[100010];

int main()

{ while(scanf("%d%d",&n,&m)==2)

{vec.clear();

for(int i=0;i<=n;i++)

parent[i]=i;

for(int i=m-1;i>=0;i--)

scanf("%d%d",&points[i].u,&points[i].v);

int ans=n;

int p=0;

for(int i=0;i=0;i--)

cout<

BFS 連通分量 求連通分量

題目描述 求乙個圖的連通分量 input n 頂點數 100 邊 以0 0作為結束標誌 output 連通分量 強連通圖的連通分量為其本身。如果為非連通圖,則連通分量為該圖的最大連通子圖。分析 建乙個100 100的布林矩陣,b x,y true表示x與y連通。同時還要記錄該點是否被遍歷過 然後遍歷...

求連通分量

求連通分量 time limit 1000ms memory limit 65536k total submit 233 accepted 132 description 求乙個圖的連通分量 input n 頂點數 100 邊 output 連通分量 sample input 5 1 2 3 4 2...

強連通分量 tarjan求強連通分量

雙dfs方法就是正dfs掃一遍,然後將邊反向dfs掃一遍。挑戰程式設計 上有說明。雙dfs 1 include 2 include 3 include 4 include 5 6using namespace std 7const int maxn 1e4 5 8 vector g maxn 圖的鄰...