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

/** @Date    : 2016-11-18-20.00

* @Author : Lweleth (SoungEarlf@gmail.com)

* @Link : https://github.com/

* @Version :

*/

#include <stdio.h>

#include <iostream>

#include <string.h>

#include <algorithm>

#include <utility>

#include <vector>

#include <map>

#include <set>

#include <string>

#include <stack>

#include <queue>

//#include<bits/stdc++.h>

#define LL long long

#define pii pair<int ,int>

#define mp(x,y) make_pair((x), (y))

#define fi first

#define se second

#define MMF(x) memset((x),0,sizeof(x))

#define MMI(x) memset((x), INF, sizeof(x))

using namespace std;



const int INF = 0x3f3f3f3f;

const int N = 1e5+2000;







vector<int >ed1[2100], ed2[2100];

int vis[2100];


int main()

{

int T;

scanf("%d", &T);

while(T--)

{

int n;

scanf("%d", &n);



for(int i = 1; i <= n; i++)

ed1[i].clear(), ed2[i].clear();



getchar();

for(int i = 1; i <= n; i++)

{

for(int j = 1; j <= n; j++)

{

char t;

t = getchar();//读入优化

if(t == 'P')

ed1[i].push_back(j);

else if(t =='Q')

ed2[i].push_back(j);

}

getchar();

}



int flag = 0;

for(int i = 1; i <= n; i++)

{

queue<int>q;

q.push(i);

MMF(vis);

while(!q.empty())

{

int nw = q.front();

q.pop();

for(int j = 0; j < ed1[nw].size(); j++)

{

int nl = ed1[nw][j];

if(vis[nl] == 0)//第二层的新点,表明第一层不能到达 直接退出

{

vis[nl] = vis[nw] + 1;

if(nw != i || vis[nl] >= 2)

{

flag = 1;

break;

}

q.push(nl);

}

}

if(flag)

break;

}

while(!q.empty())

q.pop();

MMF(vis);

q.push(i);

while(!q.empty())

{

int nw = q.front();

q.pop();

for(int j = 0; j < ed2[nw].size(); j++)

{

int nl = ed2[nw][j];

if(vis[nl] == 0)

{

vis[nl] = vis[nw] + 1;

if(nw != i || vis[nl] >= 2)

{

flag = 1;

break;

}

q.push(nl);

}

}

if(flag)

break;

}

}

if(flag)

puts("N");

else puts("T");



}

return 0;

}

HDU 5961 传递 BFS的更多相关文章

  1. HDU - 5961 传递 想法,bfs

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

  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. 域名加www与不加www不一样结果的解决办法

    有些浏览器域名访问加www 与不加www出现的页面不一样.在aj请求的时候也不同.firefox与google新版本的都会自动加上www. 比如 访问haitaohua.com,但aj请求的时候是带w ...

  2. lintcode-182-删除数字

    182-删除数字 给出一个字符串 A, 表示一个 n 位正整数, 删除其中 k 位数字, 使得剩余的数字仍然按照原来的顺序排列产生一个新的正整数. 找到删除 k 个数字之后的最小正整数. N < ...

  3. PokeCats开发者日志(十四)——终章

      已经不知道离PokeCats游戏开始开发有多少个晚上了,今晚心血来潮整理随笔的时候发现这个故事还没有划上句号.   故事的结局是最终我拿到了软著权,但是没办法上架到任何一个知名的安卓app市场,连 ...

  4. BAT批处理(三)

    1.set set命令:显示.设置或删除变量.显示变量:set 或 set s 前者显示批处理当前已定义的所有变量及其值,后者显示所有以s开头的变量及值.设置变量:set aa=abcd 此句命令便可 ...

  5. hibernate.cfg.xml的详细解释

    <!--标准的XML文件的起始行,version='1.0'表明XML的版本,encoding='gb2312'表明XML文件的编码方式-->                    < ...

  6. Spring MVC 之@Controller@RequestMapping详解

    一:配置web.xml 1)问题:spring项目中有多个配置文件mvc.xml   dao.xml 2)解决:在web.xml中 <init-param> <param-name& ...

  7. 【Linux】linux中删除指定文件外所有其他文件(夹)的问题

    今天碰到要删除指定文件(夹)外的其他文件的问题.网上查到的方法是这样的 需要在当前文件夹中进行: rm -rf !(keep) #删除keep文件之外的所有文件 rm -rf !(keep1|keep ...

  8. 【bzoj1901】Zju2112 Dynamic Rankings 离散化+主席树+树状数组

    题目描述 给定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]……a[j]中第k小的数是多少(1≤k≤ ...

  9. Android Shimmer 发光微光动画

    这是Facebook提供的一个类库(题外话http://code.facebook.com,这里有很多好玩有趣有用的Facebook开源的类库) 这么炫酷的发光动画效果,想必很多Android码农都会 ...

  10. symbol lookup error *** , undefined symbol 错误

    在重装samba过程后遇到一些问题,使用 gdb 时产生报错: gdb: symbol lookup error: gdb: undefined symbol: PyUnicodeUCS2_FromE ...