首页 > 其他分享 >再讲Floyd变形:传递闭包类问题

再讲Floyd变形:传递闭包类问题

时间:2023-01-08 17:44:41浏览次数:66  
标签:闭包 变形 传递 int Floyd 闭包类

题目

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

思路

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

代码及解析

#include<bits/stdc++.h>
using namespace std;
int read(){
	int x=0;
	char c=getchar();
	while(c>'9'||c<'0'){
		c=getchar();
	}
	while(c>='0'&&c<='9'){
		x=(x<<1)+(x<<3)+(c^'0');
		c=getchar();
	}
	return x;
}//快读
int n,m,a,b;//如题目中的意义
bool dis[101][101];//由于是传递闭包,我们定义成bool就可以了
int main(){
	n=read();
	m=read();
	for(int i=1;i<=m;i++){
		a=read();
		b=read();
		dis[a][b]=1;//注意,是有向图所以我们只搞一个边
	}
	for(int k=1;k<=n;k++){
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				dis[i][j]=dis[i][j]||(dis[i][k]&&dis[k][j]);//核心代码,逻辑很简单
			}
		}
	}
	int cnt=0;
	for(int i=1;i<=n;i++){
		int tot=0;
		for(int j=1;j<=n;j++){
			tot+=dis[i][j];
		}
		for(int j=1;j<=n;j++){
			tot+=dis[j][i];
		}//以上统计点的个数
		if(tot==n-1)cnt++;//符合条件就统计
	}
	cout<<cnt;//输出
	return 0;
}

标签:闭包,变形,传递,int,Floyd,闭包类
From: https://www.cnblogs.com/mornhus-xsylf-123/p/17034975.html

相关文章

  • Floyd
    ♠useC++11是一种求多源最短路的算法,但复杂度较高,为\(\mathcal{O}(n^3)\),不过常数较小,编码简单。(只有3个for)我们设三个节点\(k,u,v\),我们求\(u\)到\(v\)的最......
  • 三角函数恒等变形
    基本性质\[\sin^2\alpha+\cos^2\alpha=1\]\[\tan\alpha=\frac{\sin\alpha}{\cos\alpha}\]和差角公式\[\sin(\alpha\pm\beta)=\sin\alpha\cos\beta\pm\cos\alpha\sin\be......
  • 25. 变形
    一、变形  变形是指通过CSS来改变元素的形状或位置,变形不会影响到页面的布局。通过transform属性,我们可以实现变形的效果。二、平移变形<!DOCTYPEhtml><html>......
  • 算法之Floyd-Warshall算法【c++】【图论】【最短路】
    我们作为刚学图论的小蒟蒻,先接触到的算法一定是图上最短路径算法。而最短路算法中最简单的当属Floyd-Warshall算法。下面是一些基本介绍:​该算法可以计算图上任意两点间......
  • 【干货分享】PCB 板变形原因!不看不知道
    关于PCB板的变形,可以从设计、材料、生产过程等几方面来进行分析,这里简单地阐述下,供大家参考。设计方面:(1)涨缩系数匹配性一般电路板上都会设计有大面积的铜箔来当作接地之......
  • Canvas学习笔记(七)变形操作
    前言大家好,我是汪小成。最近在学习Canvas。这篇文章是我学习Canvas变形操作时记的笔记,欢迎大家审阅。简介在Canvas中有如下三个基本变形操作:图形平移:translate(x,y)......
  • math_常用放缩不等式及其变形@指数@对数@三角函数@一次函数
    文章目录​​三角函数@对数@分式​​​三角函数@对数@分式是显然的(范围内,分母大的反而小)记住这一对,有利于记忆这个不等式链代换得到并且容易发现,都可以在时,趋于无穷......
  • Unity插件 - MeshEditor(五) 网格顶点动画(变形动画)
        网格顶点动画(变形动画)是针对于物体的形状可以随意变换并记录为关键帧的动画,虽然模型的顶点数据还是应该交给GPU绘制才是正道,CPU刷新模型顶点始终是个吃力不讨好的事......
  • 二分查找以及二分查找的变形
    二分查找以及二分查找的变形常规二分查找:在有序数组中找到num代码://1.常规二分查找首先需要保证这个数组是有序的//在有序数组中找到numpublicstaticboole......
  • Floyd算法
    Floyd算法dijistra算法解决,从一点出发,到其它所有点的最短路径。此算法解决,从任何一点出发,到任何点的最短路径。https://zhuanlan.zhihu.com/p/87480486理解......