HDU 5961:传递(暴搜)
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:传递(暴搜)的更多相关文章
- HDU 5961 传递 【图论+拓扑】 (2016年中国大学生程序设计竞赛(合肥))
传递 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem ...
- HDU 5961 传递 随机化
传递 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5961 Description 我们称一个有向图G是传递的,当且仅当对任意三个不同的顶点a,,若 ...
- HDU 5961 传递
http://acm.hdu.edu.cn/showproblem.php?pid=5961 题意: 思路: 话不多说,直接暴力. #include<iostream> #include& ...
- 【图论】HDU 5961 传递
题目内容 题目链接 我们称一个有向图G是传递的当且仅当对任意三个不同的顶点a,若G中有 一条边从a到b且有一条边从b到c ,则G中同样有一条边从a到c. 我们称图G是一个竞赛图,当且仅当它是一个有向图 ...
- HDU 5961 传递 BFS
题意:中文题,就是判断一个竞赛图拆成两个图,判断是否都传递 思路:分别BFS判深度即可,用这种方法注意要进行读入优化. /** @Date : 2016-11-18-20.00 * @Author : ...
- hdu 5961 传递 (2016ccpc 合肥站 A题)
传递 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submiss ...
- 【HDU 5961 传递】
Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission ...
- hdu 5961 传递(暴力搜索)
我们称一个有向图G是传递的,当且仅当对任意三个不同的顶点a,,若G中有 一条边从a到b且有一条边从b到c ,则G中同样有一条边从a到c. 我们称图G是一个竞赛图,当且仅当它是一个有向图且它的基图是完全 ...
- HDU 5961 传递 题解
题目 我们称一个有向图G是 传递的,当且仅当对任意三个不同的顶点a,,若G中有 一条边从a到b且有一条边从b到c ,则G中同样有一条边从a到c. 我们称图G是一个 竞赛图,当且仅当它是一个有向图且它的 ...
- HDU - 5961 传递 想法,bfs
题意:给你一个有向图,满足去掉方向是完全图,将其拆成PQ两个图(没有公共边),问你两图是否分别满足对于任意3个点a,b,c 若有一条边从a到b且有一条边从b到c ,则同样有一条边从a到c. 题解:观察 ...
随机推荐
- vim中.swp文件处理
参考: http://blog.csdn.net/lingdxuyan/article/details/4993868 http://www.cnblogs.com/softwaretesting/a ...
- MAC下Android的Eclipse开发环境的搭建
一.Eclipse的下载 到网站:http://www.eclipse.org/downloads/ 上,由于我们是用Java开发的所以步骤如下: 1. 找到"Eclipse IDE fo ...
- python 环境问题
1. 查看python安装的模块及版本 $pip freeze Babel== Flask== Flask-HTTPAuth== Flask-RESTful== Flask-SQLAlchemy==2 ...
- SocketServer model_use
#!/usr/bin/env python #-*- coding:utf- -*- import SocketServer class MySocker(SocketServer.BaseReque ...
- Oracle表名、列名、约束名的长度限制
Oracle数据库版本11.2.0.1.0 Oracle表名.列名.约束名的长度限制 1.查询用户所有的表 select * from USER_TABLES; 2.查询用户所有表的列 select ...
- javascript设计模式学习之八_发布订阅(观察者)模式
一.发布订阅模式定义 jQuery中的callbacks,defered,promise本质上就是发布订阅模式的实现.ES6的promise内部实现未开源,不了解具体机制 发布订阅模式又叫做观察者模式 ...
- asmdisk opened & asmdisk cached
ASMDISK OPENED - Disk is present in the storage system and is being accessed by Automatic Storage Ma ...
- java 笔记(2) —— 内部类的作用
一.内部类简介 个人觉得内部类没多少研究价值,GUI中的事件响应算是非常典型的应用了. Java内部类其实在J2EE编程中使用较少,不过在窗口应用编程中特别常见,主要用来事件的处理.其实,做非GUI编 ...
- 前端新手分析 AJAX执行顺序,数据走向
我是一名前端的newer 在刚学习AJAX和eJS的时候,对于顺序上面有很大迷惑,现在稍微清楚了一点, 理解不对的地方,还请各位大牛帮助给我指导一下. 总的 服务器和客户端的顺序 一. 除了必要的 ...
- android adb shell
http://blog.csdn.net/zyp009/article/details/8332925 最快的Android模拟器Genymotion的安装与使用 http://blog.csdn.n ...