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
",s);
}
原文地址:https://www.cnblogs.com/f321dd/p/5495997.html