题目描述:传送门
题解:
~~大力暴力~~
代码如下:
#include<cstdio>
#include<string>
#include<cstring>
using namespace std;
const int maxn=2005,maxm=4000005;
int n,tot,ans,lnk[maxn],son[2*maxm],nxt[2*maxm],vis[maxn];
void add(int x,int y){son[++tot]=y,nxt[tot]=lnk[x],lnk[x]=tot;}
void dfs(int x,int id){
vis[x]=id; ans++;
for (int j=lnk[x];j;j=nxt[j])
if (vis[son[j]]!=id) {vis[son[j]]=id; dfs(son[j],id);}
}
int main(){
scanf("%d",&n);
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++) {
char ch=getchar(); while (ch!='0'&&ch!='1') ch=getchar();
if (ch=='1') add(i,j);
}
for (int i=1;i<=n;i++) dfs(i,i);
printf("%d\n",ans);
return 0;
}