分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

BZOJ-2208-[Jsoi2010]连通数(bitset+floyd)

发布时间:2023-09-06 01:23责任编辑:郭大石关键词:暂无标签

Description

Input

输入数据第一行是图顶点的数量,一个正整数N。 接下来N行,每行N个字符。第i行第j列的1表示顶点i到j有边,0则表示无边。

Output

输出一行一个整数,表示该图的连通数。

Sample Input

3
010
001
100

Sample Output

9

HINT

对于100%的数据,N不超过2000。

Source

第一轮

 

题解

这道题刚看到就想到暴力,时限有20s,dfs可以A

但是dfs有些慢,我们想一些更优的算法

这道题就是让我们求传递闭包

所以我们可以用bitset来优化floyd

 1 #include<bits/stdc++.h> 2 #define N 2005 3 using namespace std; 4 int n,x,ans; 5 bitset<N>flag[N]; 6 char st[N]; 7 int main(){ 8 ????scanf("%d",&n); 9 ????for (int i=1;i<=n;i++){10 ????????scanf("%s",st+1);11 ????????for (int j=1;j<=n;j++)12 ????????????if (st[j]==‘1‘||i==j) flag[i][j]=true;13 ????}14 ????for (int j=1;j<=n;j++)15 ????????for (int i=1;i<=n;i++)16 ????????????if (flag[i][j]) flag[i]|=flag[j];17 ????for (int i=1;i<=n;i++)18 ????????ans+=flag[i].count();19 ????printf("%d\n",ans);20 ????return 0;21 } 
View Code

BZOJ-2208-[Jsoi2010]连通数(bitset+floyd)

原文地址:http://www.cnblogs.com/zhuchenrui/p/7807885.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved