【HDU - 5961】传递(图,思维,暴力,枚举点)

题干:

我们称一个有向图G是传递的,当且仅当对任意三个不同的顶点a,,若G中有 一条边从a到b且有一条边从b到c ,则G中同样有一条边从a到c。
我们称图G是一个竞赛图,当且仅当它是一个有向图且它的基图是完全图。换句 话说,将完全图每条边定向将得到一个竞赛图。
下图展示的是一个有4个顶点的竞赛图。


现在,给你两个有向图P = (V,Ep)和Q = (V,Ee),满足:
1.   EP与Ee没有公共边;
2.  (V,Ep⋃Ee)是一个竞赛图。
你的任务是:判定是否P,Q同时为传递的。
Input

包含至多20组测试数据。
第一行有一个正整数,表示数据的组数。
对于每组数据,第一行有一个正整数n。接下来n行,每行为连续的n个字符,每 个字符只可能是’-’,’P’,’Q’中的一种。
∙如果第i行的第j个字符为’P’,表示有向图P中有一条边从i到j;
∙如果第i行的第j个字符为’Q’,表示有向图Q中有一条边从i到j;
∙否则表示两个图中均没有边从i到j。
保证1 <= n <= 2016,一个测试点中的多组数据中的n的和不超过16000。保证输入的图一定满足给出的限制条件。

 

 

Output

对每个数据,你需要输出一行。如果P! Q都是传递的,那么请输出’T’。否则, 请输出’N’ (均不包括引号)。

Sample Input

4 4 -PPP --PQ ---Q ---- 4 -P-P --PQ P--Q ---- 4 -PPP --QQ ---- --Q- 4 -PPP --PQ ---- --Q-

Sample Output

T N T N

Hint

在下面的示意图中,左图为图为Q。

注:在样例2中,P不是传递的。在样例4中,Q不是传递的。

解题报告:

让你求边的传递关系,考虑到每一对关系只涉及三个点a->b->c,所以枚举中间那个点b,然后枚举a,bitset直接看c就可以了。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#include<bitset>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define FF first
#define SS second
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
typedef pair<int,int> PII;
const int MAX = 2016 + 5;
char s[MAX][MAX];
bitset<MAX> bs[MAX];
struct Node {int to,ne;
} e[MAX*MAX],f[MAX*MAX];
int tot,totf,head[MAX],headf[MAX],n;
void add(int u,int v) {e[++tot].to = v;e[tot].ne = head[u];head[u] = tot;
}
void addf(int u,int v) {f[++totf].to = v;f[totf].ne = headf[u];headf[u] = totf;
}
int main()
{int T;cin>>T;while(T--) {scanf("%d",&n);tot=totf=0;for(int i = 1; i<=n; i++) head[i] = headf[i] = -1;for(int i = 1; i<=n; i++) {scanf("%s",s[i]+1);		}int flag = 1;//PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPfor(int i = 1; i<=n; i++) {bs[i].reset();for(int j = 1; j<=n; j++) {if(s[i][j] == 'P') add(i,j),addf(j,i),bs[i][j]=1;}}for(int v = 1; v<=n; v++) {for(int i = headf[v]; ~i; i = f[i].ne) {int u = f[i].to;if((bs[v]&bs[u]) != bs[v]) {flag = 0;break;}}if(flag == 0) break;}if(flag == 0) {printf("N\n");continue;}tot=totf=0;for(int i = 1; i<=n; i++) head[i] = headf[i] = -1;for(int i = 1; i<=n; i++) {bs[i].reset();for(int j = 1; j<=n; j++) {if(s[i][j] == 'Q') add(i,j),addf(j,i),bs[i][j]=1;}}for(int v = 1; v<=n; v++) {for(int i = headf[v]; ~i; i = f[i].ne) {int u = f[i].to;if((bs[v]&bs[u]) != bs[v]) {flag = 0;break;}}if(flag == 0) break;}if(flag == 0) {printf("N\n");continue;}else printf("T\n");}return 0 ;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439750.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java--对象内存布局

在HotSpot虚拟机中&#xff0c;对象在内存中的存储布局可以分为3块区域&#xff1a;对象头部、实例数据、对齐填充。 一、对象头部Header的布局 Mark WordClass 指针在32位系统下&#xff0c;上面两部分各占4B; 在64位系统中&#xff0c;Mark Work占4B&#xff0c;class指针在…

Apollo进阶课程㊸丨Apollo实战——障碍物感知和路径规划能力实战

原文链接;进阶课程㊸丨Apollo实战——障碍物感知和路径规划能力实战 环境感知在自动驾驶汽车应用中占据了核心地位。一辆车要实现自动驾驶&#xff0c;障碍物感知是最基础也是最核心的功能。 上周阿波君为大家详细介绍了「进阶课程㊷丨Apollo实战——车辆与循迹驾驶能力实战」…

3.1)深度学习笔记:机器学习策略(1)

目录 1&#xff09;Why ML Strategy 2&#xff09;Orthogonalization 3&#xff09;Single number evaluation metric 4&#xff09;Satisficing and optimizing metrics 5&#xff09;训练/开发/测试集划分&#xff08;Train/dev/test distributions&#xff09; 6&…

接口和抽象类是否继承了Object

我们先看一下Java的帮助文档对于Object的描述&#xff1a; Class Object is the root of the class hierarchy. Every class has Object as a superclass. All objects, including arrays, implement the methods of this class. Object 类是类层次结构的根类。每个类都使用 …

3.2)深度学习笔记:机器学习策略(2)

目录 1&#xff09;Carrying out error analysis 2&#xff09;Cleaning up Incorrectly labeled data 3&#xff09;Build your first system quickly then iterate 4&#xff09;Training and testing on different distributios 5&#xff09;Bias and Variance with m…

4.1)深度卷积网络:卷积神经网络基础

目录 1&#xff09;Computer vision 2&#xff09;Edge detection example&#xff08;理解&#xff09; 3&#xff09;More edge detection 4&#xff09;Padding&#xff08;重点&#xff09; 5&#xff09;Strided convolutions&#xff08;重点&#xff09; 6&#x…

4.2)深度卷积网络:实例研究

目录 1&#xff09;Why look at case studies? 2&#xff09;Classic networks&#xff08;理解&#xff09; 3&#xff09;ResNets&#xff08;理解&#xff09; 4&#xff09;Why ResNets work?&#xff08;经典&#xff09; 5&#xff09;Networks in Networks and 1…

10种常见的软件架构模式

有没有想过要设计多大的企业规模系统&#xff1f;在主要的软件开发开始之前&#xff0c;我们必须选择一个合适的体系结构&#xff0c;它将为我们提供所需的功能和质量属性。因此&#xff0c;在将它们应用到我们的设计之前&#xff0c;我们应该了解不同的体系结构。 什么是架构模…

4.3)深度卷积网络:目标检测

目录 1&#xff09;Object localization&#xff08;重点&#xff09; 2&#xff09;Landmark detection 3&#xff09;Object detection 4&#xff09;Convolutional implementation of sliding windows 5&#xff09;Bounding box prediction&#xff08;重点&#xff0…

4.4)深度卷积网络:人脸识别和神经风格转换

目录 1&#xff09;What is face recognition? 2&#xff09;One-shot learning 3&#xff09;Siamese network 4&#xff09;Triplet Loss&#xff08;重点&#xff09; 5&#xff09;Face Verification and Binary Classification 6&#xff09;What is neural style …

一步步编写操作系统 35 内存为何要分页

一直以来我们都直接在内存分段机制下工作&#xff0c;目前未出问题看似良好&#xff0c;的确目前咱们的应用过于简单了&#xff0c;就一个loader在跑&#xff0c;能出什么问题呢。可是想像一下&#xff0c;当我们物理内存不足时会怎么办呢&#xff1f;比如系统里的应用程序过多…

《python深度学习》代码中文注释

《python深度学习》由Keras之父、现任Google人工智能研究员的弗朗索瓦•肖莱&#xff08;François Chollet&#xff09;执笔&#xff0c;详尽介绍了用Python和Keras进行深度学习的探索实践&#xff0c;包括计算机视觉、自然语言处理、生成式模型等应用。书中包含30多个代码示…

【BZOJ - 4754】独特的树叶(树哈希)

题干&#xff1a; JYY有两棵树A和B&#xff1a;树A有N个点&#xff0c;编号为1到N&#xff1b;树B有N1个点&#xff0c;编号为1到N1。JYY知道树B恰好是由树A加上一个叶 节点&#xff0c;然后将节点的编号打乱后得到的。他想知道&#xff0c;这个多余的叶子到底是树B中的哪一个…

一步步编写操作系统 36 一级页表与虚拟地址1

为了给大家说清楚分页机制&#xff0c;我们先在宏观上说下cpu地址变换过程&#xff0c;先让大家有个直观的印象&#xff0c;如果有不明白的地方也不要着急&#xff0c;适时地不求甚解&#xff0c;有助于从全局上将知识融会贯通&#xff08;这句话是我即兴说的&#xff0c;说得多…

动手学无人驾驶(4):基于激光雷达点云数据3D目标检测

上一篇文章《动手学无人驾驶&#xff08;3&#xff09;&#xff1a;基于激光雷达3D多目标追踪》介绍了3D多目标追踪&#xff0c;多目标追踪里使用的传感器数据为激光雷达Lidar检测到的数据&#xff0c;本文就介绍如何基于激光雷达点云数据进行3D目标检测。 论文地址&#xff1a…

一步步编写操作系统 37 一级页表与虚拟地址2

接上节&#xff0c;分页机制是建立在分段机制之上&#xff0c;与其脱离不了干系&#xff0c;即使在分页机制下的进程也要先经过逻辑上的分段才行&#xff0c;每加载一个进程&#xff0c;操作系统按照进程中各段的起始范围&#xff0c;在进程自己的4GB虚拟地址空间中寻找可有空间…

PointNet:3D点集分类与分割深度学习模型

之前的一篇博客《动手学无人驾驶&#xff08;4&#xff09;&#xff1a;基于激光雷达点云数据3D目标检测》里介绍到了如何基于PointRCNN模型来进行3D目标检测&#xff0c;作者使用的主干网是PointNet&#xff0c;而PointNet又是基于PointNet来实现的。今天写的这篇博客就是对Po…

计算机视觉那些事儿(1):基本任务

本文主要介绍深度学习在计算机视觉领域&#xff08;Computer vision&#xff09;基本任务中的应用&#xff0c;包括分类、检测、分割&#xff08;语义与实体)。 目录 引言 分类&#xff08;Classification&#xff09; 目标检测&#xff08;Object Detection&#xff09; T…

一步步编写操作系统 38 一级页表与虚拟地址3

接上&#xff0c;页是地址空间的计量单位&#xff0c;并不是专属物理地址或线性地址&#xff0c;只要是4KB的地址空间都可以称为一页&#xff0c;所以线性地址的一页也要对应物理地址的一页。一页大小为4KB&#xff0c;这样一来&#xff0c;4GB地址空间被划分成4GB/4KB1M个页&a…

《Python编程:从入门到实践》速查表

本文是Python畅销书《Python&#xff1a;从入门到实践》速查表。 随书配套视频观看地址&#xff1a;https://www.bilibili.com/video/av35698354 目录 1.Overview 2.Lists 3.Dictionaries 4.If and While Loops 5.Functions 6.Classes 7.Files and Exceptions 8.Testin…