圖的聯通塊劃分與大小
vis陣列記錄某個點屬於哪一個聯通塊,在main(外部)中搜尋一個新的聯通塊
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn = 1e6+5;
int n,m;
int nxt[maxn],head[maxn],ver[maxn],tot;
bool vis[maxn];
int cnt;
int size[maxn];
void add(int x, int y){
ver[++tot]=y, nxt[tot]=head[x], head[x]=tot;
}
// 圖的聯通塊劃分
void dfs(int x){
vis[x]=cnt; // x屬於cnt這個聯通塊
size[cnt]++; // x所屬聯通塊的大小
for(int i=head[x]; i; i=head[i]){
int y=ver[i];
if(vis[y])continue;
dfs(y);
}
}
int main(){
cin>>n>>m;
int x,y;
for(int i=1; i<=m; ++i){
scanf("%d%d",&x,&y);
add(x,y);
}
for(int i=1;i<=n;i++){
if(!vis[i]){
cnt++; // 聯通塊編號
dfs(i);
}
}
for(int i=1; i<=n; ++i)cout<<size[vis[i]]<<endl;
}
相關文章
- 快速求圖上最小點定聯通塊權值的Trick
- 商湯創新地通過GPS與視覺融合的資料關聯方法和引數分塊優化方法視覺優化
- 分塊與莫隊
- JS中通過指定大小來壓縮圖片JS
- Android與物聯網裝置通訊-網路模型分層Android模型
- http協議與內外網的劃分HTTP協議
- 馬耳他通過了三項法案作為“區塊鏈島”計劃的一部分區塊鏈
- 區分大小寫
- HDFS 塊和 Input Splits 的區別與聯絡
- 2.6.5.2 非標準塊大小
- 2.6.5 指定資料塊大小
- 新加坡計劃通過區塊鏈推動金融普惠區塊鏈
- zone的劃分
- 一分一開快.3【大小】精準計劃,快.3的穩賺口訣
- 聯邦學習:按Dirichlet分佈劃分Non-IID樣本聯邦學習
- 聯邦學習:按混合分佈劃分Non-IID樣本聯邦學習
- 塊級、內聯、內聯塊級
- WAF的幾種劃分方法和劃分型別型別
- 【前端】HTML__內聯元素與塊元素前端HTML
- iOS UISlider數值與滑塊聯動iOSUIIDE
- 通過url動態獲取圖片大小方法總結
- 通過圖片優化,我將網站大小減少了62%優化網站
- 環境互動:通過空間劃分的關卡設計
- 劃分訓練集與測試集
- Seven 儲存結構與磁碟劃分
- Spark 原始碼解析 : DAGScheduler中的DAG劃分與提交Spark原始碼
- Git 區分大小寫Git
- 柱狀圖與執行計劃
- 架構分層的小糾結-層級該如何劃分與定位?架構
- 區塊鏈積分聯盟模式系統如何開發?(區塊鏈積分聯盟模式系統開發原始碼demo)區塊鏈模式原始碼
- win10桌面圖示怎麼進行分類分塊管理_win10桌面圖示如何分塊管理Win10
- 動態規劃之數的劃分動態規劃
- 區塊鏈開發公司如何應用?聊區塊鏈+積分聯盟區塊鏈
- 塊級元素與內聯元素相互轉換
- 樂訊通雲通訊:物聯卡,物與物之間溝通的橋樑
- 通達信分時爆量分時主圖開源
- 【Tarjan SCC 加邊使得所有圖聯通 至少選取多少個點能圖聯通 】Network of Schools加強版.md
- 世界銀行聯手聯邦銀行推行區塊鏈可持續發展計劃區塊鏈