一道传递闭包裸题。tarjan+拓扑dp也很强而且貌似更快。本来想写的。

然而查题解的时候发现一个博主的一句话引起了我的共鸣。

bzoj上这道题rank前面都是1500B+的大佬,很快,几百ms,到了1600ms,,就发现了许多600B左右的代码。
后面还有10s+的不知道咋做的。bitset也没加吧(毕竟数据太小了)。

果断Floyd-Warshall传递闭包+bitset水过。


靠题面是jpg啊

Input

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

Output

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

Sample Input

3
010
001
100

Sample Output

9

HINT

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


顺便复习传递闭包(OI里的)。好像离散数学有啥玩意我当然是不会啦。

传递闭包就是说给你有向图一个(01矩阵还是边集都行),问两点是否可达。(因为是有向图所以存在A能到B反之不可的情况)。

首先把给的信息建成一个邻接矩阵。

开局只有一个01矩阵,能不能求出正解全看造化你会不会。

其实很简单。Floyd求最短路会叭,直接跑一遍。只要两点之间距离不是inf就说明可达呗!

有点炎爆砸帕奇斯的感觉。因为只是求是否可达,就不需要初始化成inf再跑最短路,

只要$f[i][j]=1$即i可达j,那么j能到的i必然也能到,所以直接在$f[i]$的bitset上再或一个$f[j]$的bitset。

至于循环顺序,和Floyd最短路一样,不知道为啥记住就好咯。


贴代码

#include<bits/stdc++.h>
using namespace std;
const int mxn=2010;
bitset<mxn>g[mxn];
int main(){int n;scanf("%d",&n);char s[mxn];for(int i=1;i<=n;i++){scanf("%s",s+1);for(int j=1;j<=n;j++)g[i][j]=s[j]-'0';g[i][i]=1;}for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)if(g[i][k])g[i]|=g[k];int ans=0;for(int i=1;i<=n;i++)ans+=g[i].count();printf("%d",ans);
}

转载于:https://www.cnblogs.com/orzzz/p/7472550.html

[bzoj2208][Jsoi2010]连通数相关推荐

  1. BZOJ2208 [Jsoi2010]连通数

    题目描述: 度量一个有向图连通情况的一个指标是连通,指途中可达点对的个数. 下图的连通数是14 现在要你求出连通数 n<=2000 题解: 网上的题解有的写得很复杂,但是看到n的范围这么小,当然 ...

  2. [BZOJ2208]:[Jsoi2010]连通数(暴力 or bitset or 塔尖?)

    题目传送门 题目描述 度量一个有向图连通情况的一个指标是连通数,指图中可达顶点对的个数. 在上图中,顶点1可以到达1.2.3.4.5. 顶点2可以到达2.3.4.5. 顶点3可以到达3.4.5. 顶点 ...

  3. bzoj2208 [Jsoi2010]连通数

    题目链接 先是强连通分量缩点,然后出来一个DAG 然后就可以DP啦,要找出每个SCC能到达的SCC有哪些 如果直接存一个二维数组来传递闭包的话肯定会TLE对吧 于是我们使用了神奇的bitset就快多了 ...

  4. bzoj2208: [Jsoi2010]连通数

    补写. 学了学用bitset优化floyd,做这题比用强联通缩点+DP方便多了. bitset具体就是一串编码,比如说定义bitset<2100>b,b就是一个2100位的01串. 由于位 ...

  5. bzoj2208 [Jsoi2010]连通数 强连通分量缩点+拓扑排序+bitset

    Description 对于100%的数据,N不超过2000. Solution 容易想到要tarjan缩点按拓扑序递推,但是去重的步骤不好弄 C++STL中有bitset,用这个当成二进制按位状压即 ...

  6. bzoj2208:[Jsoi2010]连通数

    http://blog.csdn.net/u013598409/article/details/47037499 里面似乎有生成数据的... //我本来的想法是tarjan缩点之后然后将图遍历一遍就可 ...

  7. 2208: [Jsoi2010]连通数

    2208: [Jsoi2010]连通数 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 1371  Solved: 557 [Submit][Stat ...

  8. BZOJ 2208[Jsoi2010]连通数

    题面: 2208: [Jsoi2010]连通数 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 3100  Solved: 1347 [Submit] ...

  9. 2208: [Jsoi2010]连通数(Trajan+bitset)

    2208: [Jsoi2010]连通数 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 2929  Solved: 1280 [Submit][Sta ...

最新文章

  1. 如何获取58上真实号码_如何获取Apollo上项目下的所有namespace?
  2. mysql触发器学习的一个小错误
  3. MATLAB 在图像处理和机器视觉的应用举例01 - 官网培训视频笔记(下)分类/灰度共生矩阵/纹理分类学习
  4. psql屏幕输出全部结果_CommandBuffer实现Distort屏幕扭曲效果
  5. [转]ExtJS的使用方法汇总—配置和表格控件使用
  6. 'gbk' codec can't decode byte 0x9d in position 7674: illegal multibyte sequence
  7. 60套模板免费送,一秒搞定甘特图
  8. Python繁体中文和简体中文互转
  9. 飞思卡尔单片机高效c语言编程,飞思卡尔单片机高效C语言编程(中文)
  10. Lua xxtea 解密脚本(转,做备忘)
  11. Codeforces Round #595 (Div. 3) E. By Elevator or Stairs?
  12. 通过UEFI禁用 BD PROCHOT
  13. 深入浅出理解Java并发AQS的共享锁模式
  14. 2015 计蒜之道 初赛 第一场 搜狗输入法的分词算法
  15. 【致敬世界杯】球迷(我)和足球的故事
  16. Zabbix5系列-监控华为、H3C交换机(snmpv2c/snmpv3/snmptrap) (二)
  17. 2022帆软杯全国高校数据分析与应用联赛来啦!
  18. Mysql热点问题总结
  19. 优酷视频云技术解析-立哥技术
  20. python 类关联关系

热门文章

  1. Java之XML解析-使用dom(org.w3c.dom)解析XML
  2. linux3.0 usb键盘驱动,USBOS V3.0.2021.03.01
  3. 剑13 TEST2 听力复盘
  4. Java基础复习-数据类型学习
  5. 网络兼职圈套你知道多少?拓商提醒您谨防被骗
  6. 【在web项目jsp页面自动生成二维码功能】
  7. openresty出现socket read/write busy的原因及解决方法
  8. 7-3 馅馅馅饼 (20 分)
  9. Meta首席运营官宣布离职 入职14年助推公司市值超万亿美元
  10. 请帮小明同学设计一个程序,输入上次考试成绩(int)和本次考试成绩(int),然后输出成绩提高百分比,保留2位小数。