[BZOJ2208][JSOI2010]连通数(传递闭包+bitset)

Posted hocriser

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[BZOJ2208][JSOI2010]连通数(传递闭包+bitset)相关的知识,希望对你有一定的参考价值。

正解好象是tarjan缩点处理。

 1 #include<cstdio>
 2 #include<bitset>
 3 #include<algorithm>
 4 #define rep(i,l,r) for (int i=l; i<=r; i++)
 5 using namespace std;
 6 
 7 const int N=2010;
 8 int n,ans;
 9 char x;
10 bitset<N>f[N];
11 
12 int main(){
13     scanf("%d",&n);
14     rep(i,1,n) rep(j,1,n) scanf(" %c",&x),f[i][j]=(x==1)|(i==j);
15     rep(i,1,n) rep(j,1,n) if (f[j][i]) f[j]|=f[i];
16     rep(i,1,n) ans+=f[i].count();
17     printf("%d\n",ans);
18     return 0;
19 }

 

以上是关于[BZOJ2208][JSOI2010]连通数(传递闭包+bitset)的主要内容,如果未能解决你的问题,请参考以下文章

bzoj 2208: [Jsoi2010]连通数

bzoj2208 [Jsoi2010]连通数

bzoj2208: [Jsoi2010]连通数(dfs)

BZOJ2208: [Jsoi2010]连通数

[bzoj2208][Jsoi2010]连通数

[bzoj2208][Jsoi2010]连通数_bitset_传递闭包floyd