首页 > 其他分享 >洛谷B3611 【模板】传递闭包 floyd/bitset

洛谷B3611 【模板】传递闭包 floyd/bitset

时间:2023-12-26 18:13:37浏览次数:40  
标签:闭包 洛谷 int B3611 floyd maxn bitset putchar

目录

题目链接:https://www.luogu.com.cn/problem/B3611

参考题解:https://www.luogu.com.cn/blog/53022/solution-b3611

floyd

#include <bits/stdc++.h>
using namespace std;
const int maxn = 101;
int n, f[maxn][maxn];

int main() {
    scanf("%d", &n);
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++)
            scanf("%d", &f[i][j]);
    for (int k = 1; k <= n; k++)
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= n; j++)
                f[i][j] |= f[i][k] & f[k][j];
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            if (j > 1) putchar(' ');
            putchar(f[i][j] ? '1' : '0');
        }
        puts("");
    }
    return 0;
}

bitset优化

#include <bits/stdc++.h>
using namespace std;
const int maxn = 101;
int n, a;
bitset<maxn> f[maxn];

int main() {
    scanf("%d", &n);
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++)
            scanf("%d", &a), f[i][j] = a;
    for (int j = 1; j <= n; j++)
        for (int i = 1; i <= n; i++)
            if (f[i][j])
                f[i] |= f[j];
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            if (j > 1) putchar(' ');
            putchar(f[i][j] ? '1' : '0');
        }
        puts("");
    }
    return 0;
}

标签:闭包,洛谷,int,B3611,floyd,maxn,bitset,putchar
From: https://www.cnblogs.com/quanjun/p/17928980.html

相关文章

  • 洛谷B3647 【模板】Floyd 题解 floyd算法 求 多源多汇最短路
    题目链接:https://www.luogu.com.cn/problem/B3647floyd算法:https://oi-wiki.org/graph/shortest-path/#floyd-算法示例程序:#include<bits/stdc++.h>usingnamespacestd;constintmaxn=101;intn,m,f[maxn][maxn];intmain(){scanf("%d%d",&n......
  • Floyd判联通(传递闭包) & poj1049 sorting it all out
    Floyd判联通(传递闭包)Floyd传递闭包顾名思义就是把判最短路的代码替换成了判是否连通的代码,它可以用来判断图中两点是否连通。板子大概是这个样的:for(intk=1;k<=n;k++){ for(inti=1;i<=n;i++){ for(intj=1;j<=n;j++){ //把数值计算替换成逻辑运算——就一行,非......
  • 【题解】洛谷P1496 火烧赤壁 (离散化)
    P1496火烧赤壁-洛谷|计算机科学教育新生态(luogu.com.cn)我们首先先看数据,n<=20000,数据不多,但是范围大(-10^9<=Ai,Bi<=10^9),这时,就可以用离散化了。但是在这里我们会遇到区间重合的问题(也可以使用区间合并),如下图本题的题意是让我们求出燃烧位置的长度之和。区间重合时只......
  • 【题解】洛谷P1068 [NOIP2009 普及组] 分数线划定 (map)
    ##题目描述世博会志愿者的选拔工作正在A市如火如荼的进行。为了选拔最合适的人才,A市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的$150\%$划定,即如果计划录取$m$名志愿者,则面试分数线为排名第$m\times150\%$(向......
  • 洛谷 P1229
    题目链接有4种结构。对于只有一个儿子(度为1)的结点,其子节点在左/右不影响先序/后序的遍历顺序,总树数*2。即每多一个度为1的结点,二叉树数量翻倍。即当先根序列为\(.....XY.....,\)后根序列为\(.........YX...\)时翻倍。求出这种结构的个数即可。#include<bits/stdc++.h>usi......
  • 【洛谷 P1781】宇宙总统 题解(高精度+结构体排序)
    宇宙总统题目描述地球历公元6036年,全宇宙准备竞选一个最贤能的人当总统,共有个非凡拔尖的人竞选总统,现在票数已经统计完毕,请你算出谁能够当上总统。输入格式第一行为一个整数,代表竞选总统的人数。接下来有行,分别为第一个候选人到第个候选人的票数。输出格式共两行,第一行是......
  • python基础007----递归函数&闭包&装饰器
    一、递归函数1、递归函数概念    直接或间接的调用自身的函数,称为递归函数。每调用一次自身,相当于复制一份该函数,只不过参数有变化,参数的变化,就是重要的结束条件。2、递归函数实例#####递归函数######1、普通实现:计算n!=1*2*3*4*5*6*...*nn=int(input('普通实现阶乘,......
  • 【洛谷 P1093】[NOIP2007 普及组] 奖学金 题解(结构体排序)
    [NOIP2007普及组]奖学金题目描述某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前名学生发奖学金。期末,每个学生都有门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规......
  • 洛谷 P1957
    题目链接:在每一行,因为不确定第一个输入数据的类型,所以要用字符串输入。值得注意的是,\(\sfsprintf\)的函数原型为intsprintf(char*buffer,constchar*format[,argument]…);,其第一个参数是char*类型,因此在使用\(\sfsprintf\)时一般使用字符串数组charstr[]而不用\(\s......
  • 无涯教程-Go - 函数闭包
    Go编程语言支持可以充当函数闭包的匿名函数,当我们要内联定义函数而不传递任何名称时,将使用匿名函数。在我们的示例中,我们创建了一个函数getSequence(),该函数返回另一个函数,此函数的目的是关闭上层函数的变量i形成闭包。如-packagemainimport"fmt"funcgetSequence()func......