BZOJ2208: [Jsoi2010]连通数

bitset优化传递闭包裸题。

闲得慌的话可以缩成DAG把复杂度从$O(n^3/32)$优化到$O(nm/32)$。

#include<bitset>
#include<cstdio>
const int N=2005;
std::bitset<N>g[N];
char z[N];
int main(){
	int n;
	scanf("%d",&n);
	for(int i=0;i<n;++i){
		scanf("%s",z);
		for(int j=0;j<n;++j)
			g[i][j]=z[j]=='1'||i==j;
	}
	for(int k=0;k<n;++k)
		for(int i=0;i<n;++i)
			if(g[i][k])g[i]|=g[k];
	int s=0;
	for(int i=0;i<n;++i)
		s+=g[i].count();
	printf("%d\n",s);
}
posted @ 2016-05-15 20:22  f321dd  阅读(652)  评论(1编辑  收藏  举报