http://acm.hdu.edu.cn/showproblem.php?pid=5961

题意:中文题意。给出两个图,判断这个两个图是否都是传递的。注意一下传递的定义要看清,一开始没看清连样例都看不懂。

思路:点数很少,有了异或那题的暴力之后,这题继续试着爆搜了一下,也能过。主要存两个图,然后dfs的时候传入当前点的上一个点fa,如果 fa 和 下一个点 v 之间没有边相连,那么就不满足条件了。

 #include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#include <string>
#include <iostream>
#include <stack>
#include <map>
#include <queue>
using namespace std;
#define N 2050
#define INF 0x3f3f3f3f
struct node
{
int v, nxt;
}e1[N*N], e2[N*N];
int head1[N], head2[N], tot1, tot2;
int m1[N][N];
int m2[N][N];
bool vis[N], f;
char maze[N][N]; void add1(int u, int v)
{
e1[tot1].v = v; e1[tot1].nxt = head1[u]; head1[u] = tot1++;
} void add2(int u, int v)
{
e2[tot2].v = v; e2[tot2].nxt = head2[u]; head2[u] = tot2++;
} void dfs1(int u, int fa)
{
vis[u] = ;
for(int i = head1[u]; ~i; i = e1[i].nxt) {
int v = e1[i].v;
if(vis[v]) continue;
vis[v] = ;
// printf("dfs1 : %d, %d, %d\n", fa, u, v);
if(!m1[fa][v]) f = ;
dfs1(v, u);
}
} void dfs2(int u, int fa)
{
for(int i = head2[u]; ~i; i = e2[i].nxt) {
int v = e2[i].v;
if(vis[v]) continue;
vis[v] = ;
if(!m2[fa][v]) f = ;
dfs2(v, u);
}
} int main()
{
int t;
scanf("%d", &t);
while(t--) {
int n;
scanf("%d", &n);
for(int i = ; i < n; i++) scanf("%s", maze[i]);
memset(m1, , sizeof(m1));
memset(m2, , sizeof(m2));
memset(head1, -, sizeof(head1));
memset(head2, -, sizeof(head2));
tot1 = tot2 = ;
for(int i = ; i <= n; i++) {
for(int j = ; j <= n; j++) {
if(maze[i-][j-] == '-') ;
else if(maze[i-][j-] == 'P') {
m1[i][j] = ; add1(i, j);
} else {
m2[i][j] = ; add2(i, j);
}
}
}
f = ;
memset(vis, , sizeof(vis));
for(int i = ; i <= n && f; i++) {
if(!vis[i]) {
vis[i] = ;
dfs1(i, i);
}
}
memset(vis, , sizeof(vis));
for(int i = ; i <= n && f; i++) {
if(!vis[i]) {
vis[i] = ;
dfs2(i, i);
}
}
if(f) puts("T");
else puts("N");
}
return ;
} /*
1
4
-P-P
--PQ
P--Q
----
*/

HDU 5961:传递(暴搜)的更多相关文章

  1. HDU 5961 传递 【图论+拓扑】 (2016年中国大学生程序设计竞赛(合肥))

    传递 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)     Problem ...

  2. HDU 5961 传递 随机化

    传递 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5961 Description 我们称一个有向图G是传递的,当且仅当对任意三个不同的顶点a,,若 ...

  3. HDU 5961 传递

    http://acm.hdu.edu.cn/showproblem.php?pid=5961 题意: 思路: 话不多说,直接暴力. #include<iostream> #include& ...

  4. 【图论】HDU 5961 传递

    题目内容 题目链接 我们称一个有向图G是传递的当且仅当对任意三个不同的顶点a,若G中有 一条边从a到b且有一条边从b到c ,则G中同样有一条边从a到c. 我们称图G是一个竞赛图,当且仅当它是一个有向图 ...

  5. HDU 5961 传递 BFS

    题意:中文题,就是判断一个竞赛图拆成两个图,判断是否都传递 思路:分别BFS判深度即可,用这种方法注意要进行读入优化. /** @Date : 2016-11-18-20.00 * @Author : ...

  6. hdu 5961 传递 (2016ccpc 合肥站 A题)

    传递 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submiss ...

  7. 【HDU 5961 传递】

    Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission ...

  8. hdu 5961 传递(暴力搜索)

    我们称一个有向图G是传递的,当且仅当对任意三个不同的顶点a,,若G中有 一条边从a到b且有一条边从b到c ,则G中同样有一条边从a到c. 我们称图G是一个竞赛图,当且仅当它是一个有向图且它的基图是完全 ...

  9. HDU 5961 传递 题解

    题目 我们称一个有向图G是 传递的,当且仅当对任意三个不同的顶点a,,若G中有 一条边从a到b且有一条边从b到c ,则G中同样有一条边从a到c. 我们称图G是一个 竞赛图,当且仅当它是一个有向图且它的 ...

  10. HDU - 5961 传递 想法,bfs

    题意:给你一个有向图,满足去掉方向是完全图,将其拆成PQ两个图(没有公共边),问你两图是否分别满足对于任意3个点a,b,c 若有一条边从a到b且有一条边从b到c ,则同样有一条边从a到c. 题解:观察 ...

随机推荐

  1. sqlserver 2000事务复制问题

    2000现在用的估计不多了,把之前收集的一些复制问题整理发布出来.可能都是些很白很二的问题,但人总是由最初的无知不断成长,不对之处欢迎指正. sqlserver 2000事务复制问题服务器A(发布) ...

  2. MAC中开发Unity3D

    一直想做3D开发,去年后半年开始学IOS下的OpenGL,只学会了纹理,而且灯光音效什么的好麻烦,于是想学学Unity3D. 今年年初就计划上了,可是Unity3D收费,费用不便宜呢.用Unity3D ...

  3. iOS 上拉刷新和下拉加在更多(第三方框架EGOTableViewPullRefresh)

    #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...

  4. Hint

    select  /*+  first_rows(20)  */  *  from  t  where  id<20 --分页 select  /*+  all_rows  */  *  from ...

  5. PostgreSQL数据库中跨库访问解决方案

    PostgreSQL跨库访问有3种方法:Schema,dblink,postgres_fdw. 方法A:在PG上建立不同SCHEMA,将数据和存储过程分别放到不同的schema上,经过权限管理后进行访 ...

  6. Ios(ipad iphone) 支持字体一览

    Font Name : ThonburiFont Name : Snell RoundhandFont Name : Academy Engraved LETFont Name : AvenirFon ...

  7. ACM-ICPC竞赛模板

    为了方便打印,不再将代码放到代码编辑器里,祝你好运. ACM-ICPC竞赛模板(1) 1. 几何 4 1.1 注意 4 1.2 几何公式 4 1.3 多边形 6 1.4 多边形切割 9 1.5 浮点函 ...

  8. Python学习总结10:获取shell输出结果

    Python中获取shell命令的输出结果的常见方法如下几种: 1. import subprocess output = subprocess.Popen(['ls','-l'],stdout=su ...

  9. Java基础(57):Eclipse中环境配置(视图字体颜色行号调试快捷键等等)

    1:Eclipse的基本配置 A:程序的编译和运行的环境配置(一般不改) window -- Preferences -- Java 编译环境:Compiler 默认选中的就是最高版本. 运行环境:I ...

  10. paper 1:图像特征提取

    特征提取是计算机视觉和图像处理中的一个概念.它指的是使用计算机提取图像信息,决定每个图像的点是否属于一个图像特征.特征提取的结果是把图像上的点分为不同的子集,这些子集往往属于孤立的点.连续的曲线或者连 ...