2016年中国大学生程序设计竞赛(合肥)-重现赛1001 HDU 5961
传递
Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 42 Accepted Submission(s): 16
我们称图G是一个竞赛图,当且仅当它是一个有向图且它的基图是完全图。换句 话说,将完全图每条边定向将得到一个竞赛图。
下图展示的是一个有4个顶点的竞赛图。

现在,给你两个有向图P = (V,Ep
)和Q = (V,Ee
),满足:
1. EP
与Ee
没有公共边;
2. (V,Ep⋃Ee
)是一个竞赛图。
你的任务是:判定是否P,Q同时为传递的。
第一行有一个正整数,表示数据的组数。
对于每组数据,第一行有一个正整数n。接下来n行,每行为连续的n个字符,每 个字符只可能是’-’,’P’,’Q’中的一种。
∙
如果第i行的第j个字符为’P’,表示有向图P中有一条边从i到j;
∙
如果第i行的第j个字符为’Q’,表示有向图Q中有一条边从i到j;
∙
否则表示两个图中均没有边从i到j。
保证1 <= n <= 2016,一个测试点中的多组数据中的n的和不超过16000。保证输入的图一定满足给出的限制条件。
4
-PPP
--PQ
---Q
----
4
-P-P
--PQ
P--Q
----
4
-PPP
----
--Q-
4
-PPP
--PQ
----
--Q-
N
T
N
在下面的示意图中,左图为图为Q。
注:在样例2中,P不是传递的。在样例4中,Q不是传递的。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<vector>
#include<bitset>
#define ll __int64
using namespace std;
int t;
char mp[][];
vector<int> p[];
vector<int> q[];
struct node
{
bitset<> from;
bitset<> to;
} pp[],qq[];
int n;
void init()
{
for(int i=; i<n; i++)
{
p[i].clear();
q[i].clear();
pp[i].from.reset();
pp[i].to.reset();
qq[i].from.reset();
qq[i].to.reset();
}
}
int main()
{
scanf("%d",&t);
for(int i=; i<=t; i++)
{
scanf("%d",&n);
init();
for(int j=; j<n; j++)
scanf("%s",mp[j]);
for(int j=; j<n; j++)
{
for(int k=; k<n; k++)
{
if(mp[j][k]=='P')
p[j].push_back(k);
if(mp[j][k]=='Q')
q[j].push_back(k);
}
}
int flag1=,flag2=;
for(int k=; k<n; k++)
{
for(int j=;j<p[k].size();j++)
{
pp[k].to[p[k][j]]=;
pp[p[k][j]].from[k]=;
}
for(int j=;j<q[k].size();j++)
{
qq[k].to[q[k][j]]=;
qq[q[k][j]].from[k]=;
}
}
for(int k=; k<n; k++)
{
for(int l=; l<n; l++)
{
if(pp[k].from[l]==)
{
bitset<> exm;
exm=pp[l].to&pp[k].to;
if(exm!=pp[k].to)
{
flag1=;
break;
}
}
}
for(int l=; l<n; l++)
{
if(qq[k].from[l]==)
{
bitset<> exm;
exm=qq[l].to&qq[k].to;
if(exm!=qq[k].to)
{
flag2=;
break;
}
}
}
}
if(flag1&&flag2)
cout<<"T"<<endl;
else
cout<<"N"<<endl;
}
return ;
}
2016年中国大学生程序设计竞赛(合肥)-重现赛1001 HDU 5961的更多相关文章
- 2016年中国大学生程序设计竞赛(合肥)-重现赛1008 HDU 5968
异或密码 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submis ...
- 2016年中国大学生程序设计竞赛(合肥)-重现赛1009 HDU 5969
最大的位或 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submi ...
- HDU 5963 朋友 【博弈论】 (2016年中国大学生程序设计竞赛(合肥))
朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem Descr ...
- HDU 5969 最大的位或 【贪心】 (2016年中国大学生程序设计竞赛(合肥))
最大的位或 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem De ...
- HDU 5968 异或密码 【模拟】 2016年中国大学生程序设计竞赛(合肥)
异或密码 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem Des ...
- HDU 5961 传递 【图论+拓扑】 (2016年中国大学生程序设计竞赛(合肥))
传递 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem ...
- HDU 5965 扫雷 【模拟】 (2016年中国大学生程序设计竞赛(合肥))
扫雷 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submissi ...
- HDU 5937 Equation 【DFS+剪枝】 (2016年中国大学生程序设计竞赛(杭州))
Equation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- HDU 5936 Difference 【中途相遇法】(2016年中国大学生程序设计竞赛(杭州))
Difference Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
随机推荐
- C# 数据类型
1.整数类型: int 只能 存储证书,不能存储小数. 2.小数类型: doubie 机能存储整数,也能存储小数,小数点后面的额 15-16位. 3.金钱类型: decimal:用来存储金钱, ...
- Redis概述
1. Redis是使用内存存储(in-momory)的非关系型数据. 2. Redis的数据存储选项共有5种:字符串.列表.集合.散列表.有序集合. 3. Redi ...
- SpringMVC与MyBatis整合之日期格式转换
在上一篇博客<SpringMVC与MyBatis整合(一)——查询人员列表>中遗留了日期格式转换的问题,在这篇记录解决过程. 对于controller形参中pojo对象,如果属性中有日期类 ...
- 《Android深度探索》(卷1)HAL与驱动开发读后感:
第一章:安卓系统移植与驱动开发概述 全书分为4篇,分别从搭建开发环境,Linux驱动和Android HAL的基础知识,开发Linux驱动的高级技术和分析典型的Linux驱动源代码4个方面介绍Andr ...
- 修改加粗cmd和powershell命令行的中文字体
powershell 传教士 原创文章 2016-06-20 允许转载,但必须保留名字和出处,否则追究法律责任 ---[前言]--- 1 环境: win10 10586 powershell 5.0 ...
- Mysql数据库的一些命令_LInux
查看当前数据库的版本,因为有些命令在不同版本中 用法有可能不一样,注意 -V 是大写字母V[root@localhost ~]# mysqladmin -Vmysqladmin Ver 8.42 D ...
- css3--布局正六边形
怎样布局正六边形?-->如果不能直接布局,就只能采用图形的组合.-->既然是正六边形,则: -->AB=2分之根号3乘2倍的边长,也就是对于矩形ABCD来说,AB是BD的根号3倍(也 ...
- CMD和AMD区别的概括
CMD和AMD区别 AMD CMD 关于依赖的模块 提前执行(不过 RequireJS 从 2.0 开始,也改成可以延迟执行(根据写法不同,处理方式不同)), 延迟执行 关于依赖的位置 依赖前置 ...
- Mybatis 源码分析--crud
增加源码分析-insert() --------------------------------------------------------------------- public int ins ...
- 用docker toolBox 搭建 nginx + flask + redis 环境
本篇博客,主要是了解一下docker-compose的使用,docker-compose是官方给出的同时部署多个容器的解决方案:当你需要多个容器同时运行作为你的解决方案时:比如构建一个网站,需要php ...