题目

今天上课老师讲到一道传递闭包的问题,由于蒟蒻之前讲的不详细再来讲一遍。

传送门

思路

  1. 建图,注意是有向图。
  2. 能确定名次指的是:在图上由这个点可以到达的点数+在图上可以到达这个点的点数=n-1
  3. 对图跑一遍传递闭包(floyd变形)
  4. 按2的思路进行统计,输出答案

代码及解析

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int read(){
  4. int x=0;
  5. char c=getchar();
  6. while(c>'9'||c<'0'){
  7. c=getchar();
  8. }
  9. while(c>='0'&&c<='9'){
  10. x=(x<<1)+(x<<3)+(c^'0');
  11. c=getchar();
  12. }
  13. return x;
  14. }//快读
  15. int n,m,a,b;//如题目中的意义
  16. bool dis[101][101];//由于是传递闭包,我们定义成bool就可以了
  17. int main(){
  18. n=read();
  19. m=read();
  20. for(int i=1;i<=m;i++){
  21. a=read();
  22. b=read();
  23. dis[a][b]=1;//注意,是有向图所以我们只搞一个边
  24. }
  25. for(int k=1;k<=n;k++){
  26. for(int i=1;i<=n;i++){
  27. for(int j=1;j<=n;j++){
  28. dis[i][j]=dis[i][j]||(dis[i][k]&&dis[k][j]);//核心代码,逻辑很简单
  29. }
  30. }
  31. }
  32. int cnt=0;
  33. for(int i=1;i<=n;i++){
  34. int tot=0;
  35. for(int j=1;j<=n;j++){
  36. tot+=dis[i][j];
  37. }
  38. for(int j=1;j<=n;j++){
  39. tot+=dis[j][i];
  40. }//以上统计点的个数
  41. if(tot==n-1)cnt++;//符合条件就统计
  42. }
  43. cout<<cnt;//输出
  44. return 0;
  45. }

再讲Floyd变形:传递闭包类问题的更多相关文章

  1. UVA10048 Audiophobia[Floyd变形]

    UVA - 10048 Audiophobia Consider yourself lucky! Consider yourself lucky to be still breathing and h ...

  2. 【转】再讲IQueryable<T>,揭开表达式树的神秘面纱

    [转]再讲IQueryable<T>,揭开表达式树的神秘面纱 接上篇<先说IEnumerable,我们每天用的foreach你真的懂它吗?> 最近园子里定制自己的orm那是一个 ...

  3. C语言 文件操作11--文件函数再讲 fseek()和ftell()

    //文件函数再讲 //fseek(),ftell(), #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdl ...

  4. C语言 文件操作4--文件结构体FILE的理解以及缓冲区再讲

    //文件结构体FILE的理解以及缓冲区再讲 #include<stdio.h> #include<stdlib.h> //要点:文件结构 //struct _iobuf { / ...

  5. UVa(247),Floyd做传递闭包

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  6. POJ2253——Frogger(Floyd变形)

    Frogger DescriptionFreddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fi ...

  7. UVA - 247 Calling Circles(Floyd求传递闭包)

    题目: 思路: 利用Floyd求传递闭包(mp[i][j] = mp[i][j]||(mp[i][k]&&mp[k][j]);),当mp[i][j]=1&&mp[j][ ...

  8. python爬虫22 | 以后我再讲python「模拟登录」我就是狗

    接下来就是 学习python的正确姿势 做爬虫 绕不开模拟登录 为此小帅b给大家支了几招 python爬虫19 | 遇到需要的登录的网站怎么办?用这3招轻松搞定! 有些网站的登录很弱鸡 传个用户名和密 ...

  9. ArcGIS API for JavaScript 入门教程[6] 再讲数据——Map类之可操作图层

    [回顾]上篇交代了Map是各种图层(不管是实际上的图层还是由图层构成的对象)的容器,是数据的容器,并不作显示(由视图类绘制).并重点讲解了由图层构成的复杂图层——高程属性ground和底图属性base ...

随机推荐

  1. golang中的一些实用功能

    0.1.索引 https://waterflow.link/articles/1663921524839 通过使用一些通用代码来节省时间,而无需单独实现它们.以下是一些开发中经常会用到的函数实现的列表 ...

  2. ThreadPoolExecutor BlockingQueue讲解

    有四种常用阻塞队列策略: 1.直接拒绝:(Direct Handoffs) 一个好的工作队列应该是不缓存任务,而是直接交给线程处理,就如SynchronousQueue一样.一个任务将会入队失败,如果 ...

  3. MQTT+esp32+nodered+springboot 智能家居项目 -- 项目准备

    1.后台系环境:idea  jdk8.0以上  maven   tomcat   spring boot 2.前端环境  nodejs  nodered 3.硬件环境: audrion   esp32 ...

  4. Istio Ambient Mesh七层服务治理图文详解

    摘要:本文主要集中剖析Ambient mesh七层服务治理相关内容. 本文分享自华为云社区<Istio Ambient Mesh七层服务治理图文详解>,作者:华为云云原生团队. 由于Amb ...

  5. vue 项目中不更新的问题

    在项目中 做矩阵题  嵌套的v-for <!-- 多选矩阵题 --> <template v-if="question.name==='MATRIX_CHECKBOX'&q ...

  6. perl中 use strict会出现“requires explicit package name”错误

    转载 perl中use strict的用法 如果你使用 use strict 的话,它会强迫你用 my 声明变量,否则将会报上述错误.

  7. 有趣的 Go HttpClient 超时机制

    hello,大家好呀,我是既写 Java 又写 Go 的小楼,在写 Go 的过程中经常对比这两种语言的特性,踩了不少坑,也发现了不少有意思的地方,今天就来聊聊 Go 自带的 HttpClient 的超 ...

  8. 带你了解S12直播中的“黑科技”

    摘要:让精彩更流畅.让较量更清晰.让参与更沉浸.让体验更有趣,幕后的舞台,从来都是技术的战场,S12背后的名场面同样场场高能. 本文分享自华为云社区<用硬核方式打开S12名场面>,作者:华 ...

  9. 2022春每日一题:Day 33

    题目:[USACO 6.1.3] Cow XOR 没找到这题具体网址,这个题就是求最大异或区间(总长度尽量小,右端点尽量大) 嗯很显然一个[l,r]的异或和=s[r]s[l-1],那么现在有了优秀的n ...

  10. 数据库可视化工具分享 (DBeaver)

    前提:最近公司下发通知,所有开发人员 必须 卸载 Navicat 数据库可视化工具,不知道兄弟们有没有在使用的,可能现在的反应跟我一样,一脸懵逼,Navicat为什么不能使用呢? 有事没事找度娘,于是 ...