HDU - 5961 传递 想法,bfs
题意:给你一个有向图,满足去掉方向是完全图,将其拆成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的更多相关文章
- HDU 5961 传递 BFS
题意:中文题,就是判断一个竞赛图拆成两个图,判断是否都传递 思路:分别BFS判深度即可,用这种方法注意要进行读入优化. /** @Date : 2016-11-18-20.00 * @Author : ...
- 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 传递 (2016ccpc 合肥站 A题)
传递 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submiss ...
- 【图论】HDU 5961 传递
题目内容 题目链接 我们称一个有向图G是传递的当且仅当对任意三个不同的顶点a,若G中有 一条边从a到b且有一条边从b到c ,则G中同样有一条边从a到c. 我们称图G是一个竞赛图,当且仅当它是一个有向图 ...
- 【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是一个 竞赛图,当且仅当它是一个有向图且它的 ...
随机推荐
- libevent 入门教程:Echo Server based on libevent(转)
下面假定已经学习过基本的socket编程(socket, bind, listen, accept, connect, recv, send, close),并且对异步/callback有基本的认识. ...
- [转]如何配置和使用Tomcat访问日志
配置位置在log下的server.xml,(tomcat容器) <Engine defaultHost="localhost" name="Catalina&quo ...
- 设置js同源
1)设置 document.domain 成一样的就行了(前提是都是同一个顶级域名) 2)例如,域名1:news.xxx.com ,域名2:member.xxx.com,这时可以设置它们的 docum ...
- Git 学习笔记--Eclipse Git 插件安装
http://benjsicam.me/blog/how-to-setup-eclipse-git-plugin-egit-for-github-part-1-tutorial/ http://ben ...
- Android文件系统编译出错记录
错误1: 注意:external/protobuf/java/src/main/java/com/google/protobuf/GeneratedMessageLite.java 使用了未经检查或不 ...
- AE插件开发的一些总结
首先会遇到第一个问题,为什么输出的aex文件不在bin目录下,而在别的目录下.其实问题出在链接器的设置里.把这个改成自己想要的目录就OK 然后一些object的报错,直接把警告等级改成0就可以了.属性 ...
- es5.0 安装head插件
es5.0的安装和之前的版本有些区别,我的电脑用plugin install 没成功, 查了一下资料,说是可以用grunt进行安装,启动; 1,先安装grunt: grunt是一个很方便的构建工具,可 ...
- C语言char*字符串数组和unsigned char[]数组的相互转换
#include <iostream> #include <string> using namespace std; void convertUnCharToStr(char* ...
- java基础---->数组的基础使用(二)
这里对List(jdk 1.7)列表里面的一些方法做一些简单的分析,以避免有些函数的误用.手写瑶笺被雨淋,模糊点画费探寻,纵然灭却书中字,难灭情人一片心. List中注意的方法 一.Arrays.as ...
- 布式实时日志系统(三) 环境搭建之centos 6.4下hadoop 2.5.2完全分布式集群搭建最全资料
最近公司业务数据量越来越大,以前的基于消息队列的日志系统越来越难以满足目前的业务量,表现为消息积压,日志延迟,日志存储日期过短,所以,我们开始着手要重新设计这块,业界已经有了比较成熟的流程,即基于流式 ...