zoukankan      html  css  js  c++  java
  • [BZOJ2208][Jsoi2010]连通数

    2208: [Jsoi2010]连通数

    Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 3273  Solved: 1431 [Submit][Status][Discuss]

    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。

    floyd+bitset传递闭包

    #include <cstdio>
    #include <bitset>
    using namespace std;
    const int maxn = 2000 + 10;
    int n;
    bitset<maxn> dis[maxn];
    char s[maxn];
    int main(){
        scanf("%d", &n);
        for(int i = 1; i <= n; i++){
            scanf("%s", s + 1);
            for(int j = 1; j <= n; j++)
                if(s[j] == '1' || i == j) dis[i][j] = true;
        }
        for(int k = 1; k <= n; k++)
            for(int i = 1; i <= n; i++)
                if(dis[i][k]) dis[i] |= dis[k];
        int ans = 0;
        for(int i = 1; i <= n; i++)
            ans += dis[i].count();
        printf("%d
    ", ans);
        return 0;
    }
  • 相关阅读:
    Python 读写
    测试项目总结之手淘安全中心
    Python 单元测试
    Python __name__变量
    java数据类型取值范围
    java数据类型之间的转换
    Git 常用命令清单
    Linux Distribution
    UNIX&Linux发展图谱
    Linux 软件大全
  • 原文地址:https://www.cnblogs.com/ruoruoruo/p/7805252.html
Copyright © 2011-2022 走看看