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. 题解:观察 ...
随机推荐
- MongoDB的C#封装类
代码: samus驱动 using System; using System.Collections.Generic; using System.Linq; using System.Text; us ...
- gcc常用
gcc选项:-I指定头文件搜索路径.-D编译时定义宏-L链接时指定库文件搜索路径-l指定库文件名称-pipe使用管道,一个程序的输出作为输入直接送给另外一个程序, 而且还可以一直连续下去,不需要临时文 ...
- 第七篇 Replication:合并复制-订阅
本篇文章是SQL Server Replication系列的第七篇,详细内容请参考原文. 订阅服务器就是复制发布项目的所有变更将传送到的服务器.每一个发布需要至少一个订阅,但是一个发布可以有多个订阅. ...
- CGCS2000 VS WGS84
- [NetTopologySuite](1)线面相交
用DotSpatial.Topology进行的测试,即使有NetTopologySuite类库进行测试: Polygon inputGeometry = null; LineString analys ...
- python os用法笔记
获取文件所在路径 import os os.path.dirname(__file__) 获取当前文件的所在路径 print (os.path.dirname(os.path.dirname(__f ...
- Spring Security HTTP Basic for RESTFul and FormLogin (Cookies) for web - Annotations
@Configuration @EnableWebMvcSecurity @EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabl ...
- Leetcode: Insert Delete GetRandom O(1)
Design a data structure that supports all following operations in average O(1) time. insert(val): In ...
- HTML_css样式表 样式属性 格式布局
CSS(Cascading Style Sheet,叠层样式表),作用是美化HTML网页. /*注释区域*/此为注释语法 一.样式表 (一)样式表的分类 1.内联样式表 和HTML联合显示,控制精确, ...
- js eventhandler
1.获取所有eventhandler 使用 getEventHandler(target) 2.target.addEventHandler(type,handler,userCapture?) 3. ...