今天有点累.....写了几道签到题溜了
无脑前向星暴力.......
/**************************************************************
Problem: 2208
User: syh0313
Language: C++
Result: Accepted
Time:12168 ms
Memory:48168 kb
****************************************************************/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
using
namespace
std;
const
int
maxe=4000010;
const
int
maxd=2010;
char
s[maxd];
int
n,ans,len,topt,st[maxe],to[maxe],nt[maxe];
bool
f[maxd];
void
add(
int
x,
int
y)
{to[++topt]=y; nt[topt]=st[x]; st[x]=topt;}
void
dfs(
int
x)
{
f[x]=1; ans++;
int
p=st[x];
while
(p) {
if
(!f[to[p]])dfs(to[p]); p=nt[p];}
}
int
main()
{
scanf
(
"%d"
,&n);
for
(
int
i=1;i<=n;i++)
{
scanf
(
"%s"
,s+1); len=
strlen
(s+1);
for
(
int
j=1;j<=len;j++)
if
(s[j]==
'1'
) add(i,j);
}
for
(
int
i=1;i<=n;i++) {
memset
(f,0,
sizeof
f); dfs(i);}
printf
(
"%d\n"
,ans);
return
0;
}