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

题解:观察,发现题目等价于对PQ分别bfs。如果某点的深度大于等于2就判错。用vis储存深度,注意对vis数组的操作:每推入一个起点时,vis[起点]=1,(pop时不--,最后统一memset0)每推入一个未访问的相邻点v时vis[v]=vis[now]+1;

坑:1.cin>>n写错地方,结果写了两个cin>>n,结果把图的第一个符吞了。2.q.clear没有这个函数,用赋值 q1 = queue<int>();3.用邻接链表建图遍历边时循环从0开始

ac代码:

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<stdio.h>
#include<vector>
#include<algorithm>
#include<vector>
#include<queue>
#include<string.h>
using namespace std;
const int maxn = ;
vector<int> EP[maxn],EQ[maxn];
char map[maxn][maxn];
int vis[maxn];
int main() {
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
for (int i = ; i <= n; i++) {
EP[i].clear();
EQ[i].clear();
} for (int i = ; i <= n; i++) {
scanf("%s", map[i]+);
//cout << map[i] << endl; for (int j =; j < n; j++) {
if (map[i][j] == 'P')EP[i].push_back(j);
if (map[i][j] == 'Q') EQ[i].push_back(j);
}
}
//for (int i = 1; i <= n; i++)cout << map[i]<<endl;
//bfs();
int flag = ;
queue<int> Q;
for (int i = ; i <= n; i++) {
if (EP[i].empty()) continue;
memset(vis, , sizeof(vis)); Q.push(i); vis[i] = ;
while (!Q.empty()) {
int now = Q.front();
Q.pop(); //vis[now]--;
for (int j = ; j < EP[now].size(); j++) {
int v = EP[now][j];
if (!vis[v]) {
vis[v]=vis[now]+;
Q.push(v);
}
if (vis[v] == ) {
flag = ;
break;
} }
}
if (flag == )break;
}
if (!flag) {
puts("N");
continue;
}
//repeat;
flag = ;
while (!Q.empty()) Q.pop();
for (int i = ; i <= n; i++) {
if (EQ[i].empty()) continue;
memset(vis, , sizeof(vis)); Q.push(i); vis[i] = ;
while (!Q.empty()) {
int now = Q.front();
Q.pop(); //vis[now]--;
for (int j = ; j < EQ[now].size(); j++) {
int v = EQ[now][j];
if (!vis[v]) {
vis[v] = vis[now] + ;
Q.push(v);
}
if (vis[v] == ) {
flag = ;
break;
} }
}
if (flag == )break;
}
if (!flag) puts("N");
else puts("T"); }
}

HDU - 5961 传递 想法,bfs的更多相关文章

  1. HDU 5961 传递 BFS

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

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

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

  3. HDU 5961 传递 随机化

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

  4. HDU 5961 传递

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

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

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

  6. 【图论】HDU 5961 传递

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

  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是一个 竞赛图,当且仅当它是一个有向图且它的 ...

随机推荐

  1. Core Java笔记

    前言 一·基础知识 二·定义,关键字和类型 三·表达式和控制流 四·数组 五·对象和类 六·高级语言特性 七·异常 八·图形用户接口 九·AWT(Abstract Window Toolkit) 事件 ...

  2. python BeautifulSoup库用法总结

    1. Beautiful Soup 简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.pyt ...

  3. 使用HttpClient访问url的工具类

    maven依赖jar包配置: <dependency> <groupId>org.apache.httpcomponents</groupId> <artif ...

  4. 【安全开发】Android安全编码规范

    申明:本文非笔者原创,原文转载自:https://github.com/SecurityPaper/SecurityPaper-web/blob/master/_posts/2.SDL%E8%A7%8 ...

  5. 在线电路编程 (ICP)

    通过在线电路编程(ICP)编程Flash.如果产品在开发中,或在终端客户的产品需要固件升级,采用硬件编程模式非常困难且不方便.采用ICP方式将很简单,且不需要将微控制器从板上拆下来.ICP方式同样允许 ...

  6. N76E003的学习之路(一)

    N76E003是8051内核的一款单片机MCU,它提供丰富的特殊功能模块,包括: 1KRAM其中包括256字节SRAM,768字节XRAM. 最多可达18个标准管脚. 两组标准16位定时器/计数器:定 ...

  7. 在 Core Data 中存取 transformable 类型的数据

    本文转载至 http://imenjoe.com/2015/04/10/CoreData-transformable-20150410/ 在开发过程中有一个需要在 Core Data 中存取 NSDi ...

  8. .net 将DLL程序集生成到指定目录中

    .在程序集右键属性 .在程序集属性界面中找到生成事件 在预先生成事件命令行添加: IF NOT EXIST "$(ProjectDir)..\Bin" MD "$(Pro ...

  9. 【MySQL8】 安装后的简单配置(主要解决navicat等客户端登陆报错问题)

    一.navicat等客户端登陆报错的原因 使用mysql,多数我们还是喜欢用可视化的客户端登陆管理的,个人比较喜欢用navicat.一般装好服务器以后,习惯建一个远程的登陆帐号,在mysql8服务器上 ...

  10. springbatch---->springbatch的使用(一)

    这里我们通过一个简单的实例来对springbatch做一个入门的体会.刚刚好,看见你幸福的样子,于是幸福着你的幸福. springbatch的入门案例 简单项目的结构如下: 一.引入maven的spr ...