题目传送门

分析

题目大意:给一个竞赛图,将图分成两部分,判断两部分的图是否符合传递闭包,a->b,b->c,则a->c

这道题用Floyd硬跑的显然n\({^3}\)会T

如果用bfs可能能过,不过有些麻烦,而且时限也不少

其实传递闭包的话用bitset就可以了

时间效率为n\({^2}\),一共有20组数据,所以实际还要大一些

但是bitset的常数非常小,大概只有\(\frac{1}{32}\),所以过这一道题还是没有问题的

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn=2021;
bitset<maxn> p[maxn];
bitset<maxn> q[maxn];
bool visq[maxn][maxn],visp[maxn][maxn];
int main(){
int t;
scanf("%d",&t);
while(t--){
for(int i=0;i<maxn;i++){
p[i].reset();
q[i].reset();
}
memset(visq,0,sizeof(visq));
memset(visp,0,sizeof(visp));
int n;
scanf("%d",&n);
char ch;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
scanf(" %c",&ch);
if(ch=='P') p[i][j]=1,visp[i][j]=1;
if(ch=='Q') q[i][j]=1,visq[i][j]=1;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(p[i][j]) p[i]|=p[j];
if(q[i][j]) q[i]|=q[j];
}
}
bool jud=0;
for(int i=1;i<=n;i++){
if(jud) break;
for(int j=1;j<=n;j++){
if(visp[i][j]==0 && p[i][j]==1) jud=1;
if(visq[i][j]==0 && q[i][j]==1) jud=1;
}
}
if(jud) printf("N\n");
else printf("T\n");
}
return 0;
}

下面附上正解思路:竞赛图即为任意两点中间有且只有一条有向边。一开始想暴力解决然后T了,最后看题解知道应该存两个图,其中Q的反向边存在P里,P的反向边存在Q里,然后在两个图内判断是否有环即可,有环则代表不传递。判断有环可用dfs实现。

最新文章

  1. Web应用请求和响应 HTTP相关
  2. PHP的魔法方法__set() __get()
  3. MyEclipse 2015 Stable 2.0安装包及破解工具下载
  4. 3.10.17 procfs示例
  5. 结对编程项目——四则运算vs版
  6. Codeforces Round #351 (VK Cup 2016 Round 3, Div. 2 Edition)
  7. Solaris 命令 小结
  8. Mybatis学习记录(七)----Mybatis查询缓存
  9. iOS - UIRefreshControl 刷新数据
  10. Loadrunner 使用检查点
  11. Embedding Lua in C: Using Lua from inside C.
  12. Linux更改默认jdk
  13. POJ-3580-SuperMemo(splay的各种操作)
  14. 2_Linux_文件和权限处理命令
  15. C#主键类型选择
  16. 最长回文串(manacher算法)
  17. Ansible进阶--playbook的使用
  18. 【翻译】从Store生成Checkbox Group
  19. LruCache的使用及原理
  20. [Swift]LeetCode811. 子域名访问计数 | Subdomain Visit Count

热门文章

  1. 震惊!当Python遇到Excel后,将开启你的认知虫洞
  2. CGLIB动态代理机制,各个方面都有写到
  3. 阿里巴巴 《Java 开发者手册》+ IDEA编码插件
  4. 一个static和面试官扯了一个小时,舌战加强版
  5. windows server2012在已有.net4.5框架的基础上安装.net3.5的方法
  6. MacOS配置.bash_profile,重启终端后配置失效和MacOS .zshrc does not exist问题
  7. Html/css 水平布局居中
  8. curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to storage.googleapis.com:443
  9. 素数筛 : Eratosthenes 筛法, 线性筛法
  10. phoenix从入门到精通