Description

Input

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

Output

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

Sample Input


010 
001 
100

Sample Output

9

HINT

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

Source

Solution

好好的暴力不写去写什么算法

虽然我也是学算法学傻了的,前两天看到一道题说这不是莫队裸题吗,然后其实前缀和就行了

做法1:$tarjan$缩点+拓扑

做法2:$floyd$传递闭包

做法3:暴力$dfs$

因为我这人比较菜所以就写做法3了

对于每个点直接开一个$vis$数组判断有没有到达过就可以了

比tarjan短多了

#include <bits/stdc++.h>

using namespace std ;

#define N 2010
#define ll long long int n , head[ N ] , cnt , vis[ N ] ;
struct node {
int to , nxt ;
}e[ N * N ] ; void ins( int u , int v ) {
e[ ++ cnt ].to = v ;
e[ cnt ].nxt = head[ u ] ;
head[ u ] = cnt ;
} ll find( int u ) {
ll ans = ;
vis[ u ] = ;
for( int i = head[ u ] ; i ; i = e[ i ].nxt ) {
if( vis[ e[ i ].to ] ) continue ;
ans += find( e[ i ].to ) ;
}
return ans ;
} int main() {
scanf( "%d" , &n ) ;
for( int i = ; i <= n ; i ++ ) {
char ch[ ] ;
scanf( "%s" , ch + ) ;
for( int j = ; j <= n ; j ++ ) {
if( ch[ j ] == '' ) {
ins( i , j ) ;
}
}
}
ll ans = ;
for( int i = ; i <= n ; i ++ ) {
memset( vis , ,sizeof( vis ) ) ;
ans += find( i ) ;
// printf( "Case #%d : %d\n" , i , ans - t ) ;
}
printf( "%lld\n" , ans ) ;
return ;
}

[BZOJ2208][Jsoi2010]连通数 暴力枚举的更多相关文章

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

    连通数 bzoj-2208 Jsoi-2010 题目大意:给定一个n个节点的有向图,问每个节点可以到达的点的个数和. 注释:$1\le n\le 2000$. 想法:网上有好多tarjan+拓扑序dp ...

  2. bzoj2208 [Jsoi2010]连通数(scc+bitset)

    2208: [Jsoi2010]连通数 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1879  Solved: 778[Submit][Status ...

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

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

  4. BZOJ2208 [Jsoi2010]连通数[缩点/Floyd传递闭包+bitset优化]

    显然并不能直接dfs,因为$m$会非常大,复杂度就是$O(mn)$: 这题有三种做法,都用到了bitset的优化.第二种算是一个意外的收获,之前没想到竟然还有这种神仙操作.. 方法一:缩点+DAG上b ...

  5. BZOJ2208: [Jsoi2010]连通数(tarjan bitset floyd)

    题意 题目链接 Sol 数据水的一批,\(O(n^3)\)暴力可过 实际上只要bitset优化一下floyd复杂度就是对的了(\(O(\frac{n^3}{32})\)) 还可以缩点之后bitset维 ...

  6. BZOJ2208:[JSOI2010]连通数(DFS)

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

  7. BZOJ2208 [Jsoi2010]连通数 【图的遍历】

    题目 输入格式 输入数据第一行是图顶点的数量,一个正整数N. 接下来N行,每行N个字符.第i行第j列的1表示顶点i到j有边,0则表示无边. 输出格式 输出一行一个整数,表示该图的连通数. 输入样例 3 ...

  8. BZOJ2208: [Jsoi2010]连通数

    tarjan缩点后拓扑排序,每一个点用一个bitset记录哪些点能到达它. PS:数据太水,暴力能过. #include<bits/stdc++.h> using namespace st ...

  9. 2018.09.11 bzoj2208: [Jsoi2010]连通数(bitset+floyd)

    传送门 听说正解是缩点+dfs? 直接bitset优化floyd传递闭包就行了.(尽管时间复杂度是假的O(n3/32)" role="presentation" styl ...

随机推荐

  1. Android内存泄漏的本质原因、解决办法、操作实例

    今年最后一个迭代终于结束了,把过程中碰到的不熟悉的东西拉出来学习总结一下   内存泄漏的本质是:[一个(巨大的)短生命周期对象的引用被一个长生命周期(异步生命周期)的对象持有]   这个东西分为两个部 ...

  2. mysql 权限管理介绍

    mysql权限管理 就是对控制用户对库.对表的权限.对表中字段权限 权限管理分步 1.创建账号 创建账号有本地账号和远程账号 本地账号 本地账号只能在mysql服务端机器做操作 '; # mysql ...

  3. vue中定义多重样式

  4. Could not calculate build plan: Plugin org.apache.maven.plugins:maven-resources-plugin:2.6 or one of

    eclipse在build maven项目的时候报错, 原来是Windows------->preference----->maven----------->usesettings配 ...

  5. 深入理解python之一——python3对象的一些特性

    文章使用markdown写的,编辑的时候行间距还可以,显示的时候行间距好小,我也没办法. 首先,需要明白的是python是一种解释性语言标准,他可以由c.java或者其他语言来实现.在python的标 ...

  6. SQL Expression Language Tutorial 学习笔记一

    http://docs.sqlalchemy.org/en/latest/core/tutorial.html Google 翻译了一下 SQLAlchemy Expression Language, ...

  7. mysql进程文件

  8. 前端开发必备之Chrome开发者工具(上篇)

    本文介绍的 Chrome 开发者工具基于 Chrome 65版本,如果你的 Chrome 开发者工具没有下文提到的那些内容,请检查下 Chrome 的版本 简介 Chrome 开发者工具是一套内置于 ...

  9. Intro to Python for Data Science Learning 4 - Methods

    Methods From:https://campus.datacamp.com/courses/intro-to-python-for-data-science/chapter-3-function ...

  10. Linux基础命令---e2fsck

    ex2fsck 检查ext2.ext3.ext4文件系统,如果系统已经挂载了,那么不建议去检查,因为这样是不安全的.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.op ...