(先说一下这是我们老师上搜索时找的例题所以没用什么其他的方法就是朴素的dfs搜索)
#include<bits/stdc++.h>
using namespace std;
typedef int ll;
ll n,m[3005][3005],vis[3005],sum,res;
void dfs(ll x){
vis[x]=1;
for(ll i=1;i<=n;i++){
if(m[x][i] && !vis[i] && x!=i) ++res,dfs(i);
}
}
int main(){
scanf("%d",&n);
for(ll i=1;i<=n;i++)
for(ll j=1;j<=n;j++)
scanf("%1d",m[i]+j);
for(ll i=1;i<=n;i++){
memset(vis,0,sizeof vis);
res=1;
dfs(i);
sum+=res;
}
printf("%d",sum);
return 0;
}
按照我的理解是不是从每个点开始跑整个图搜一下n^2的复杂度?
还请大佬指出 谢谢各位了