问题:给一个图,图中有n个顶点,m条边,求图中连通块的个数。
以下有两种方法可用:1.DFS 2.并查集
1.用邻接矩阵存图,dfs找连通块数
.#include<bits/stdc++.h>
const int N=1005;
using namespace std;
vector<int> t[N];
int vis[N]={0};
void dfs(int k)
{
for(int i=0;i<t[k].size();i++)
{
if(vis[t[k][i]]==0)
{ vis[t[k][i]]=1;
dfs(t[k][i]);
}
}
}
int main()
{
int n,m;//n个顶点,m条边
cin>>n>>m;
int a,b;//边所连接的两个顶点
for(int i=1;i<=m;i++)
{
cin>>a>>b;
t[a].push_back(b);
t[b].push_back(a);
}
int ans=0;//记录连通块数量
for(int i=1;i<=n;i++)
{