HDU5961 传递(bfs)
来源:互联网 发布:服务器软件下载 编辑:程序博客网 时间:2024/05/22 19:48
题意:中文题。。
思路:要满足a -> b, b -> c且有a -> c的一条路,即图里面从任意点出发,没有长度大于1的路径长度,对每个点bfs一次,如果有长度大于1的路,就不是,直接返回
#include<cstdio>#include<cstring>#include<cmath>#include<queue>#include<vector>#include<algorithm>typedef long long ll;const int maxn = 2017;const int INF = 1e9;const int mod = 1e8 + 7;using namespace std;vector<int> G[maxn];vector<int> g[maxn];char s[maxn][maxn];char vis[maxn];int n, T;bool bfs(int u, vector<int> G[maxn]) { memset(vis, 0, sizeof(vis)); vis[u] = 1; queue<int> q; q.push(u); while(!q.empty()) { int v = q.front(); q.pop(); for(int i = 0; i < G[v].size(); i++) { int nxt = G[v][i]; if(vis[nxt]) continue; if(v != u) return false; vis[nxt] = 1; q.push(nxt); } } return true;}int main() { scanf("%d", &T); while(T--) { int l1 = 1, l2 = 1; scanf("%d", &n); for(int i = 0; i < n; i++) scanf("%s", s[i]); for(int i = 0; i < maxn; i++) { g[i].clear(); G[i].clear(); } for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { if(s[i][j] == 'P') G[i].push_back(j); if(s[i][j] == 'Q') g[i].push_back(j); } } for(int i = 0; i < n; i++) { if(!bfs(i, G)) { l1 = 0; break; } if(!bfs(i, g)) { l2 = 0; break; } } if(l1 && l2) puts("T"); else puts("N"); } return 0;}
0 0
- HDU5961 传递(bfs)
- hdu5961 传递(BFS)
- hdu5961 传递(图论)
- HDU5961传递(思维)
- hdu5961传递(bitset乱搞)
- HDU5961 传递
- HDU5961-传递
- ccpc合肥A题 hdu5961(bfs)
- HDU5961(bitset,暴力)
- hdu5961
- HDU 5961 传递(BFS)
- HDU 5961 传递(BFS)
- HDU 5961 传递 bfs乱搞
- HDU --- 5961 传递 【思维 + bfs】
- hdu1254(bfs+bfs)
- 算法学习笔记(一):拓扑排序与传递闭包(通过bfs&&dfs)
- HDU 5961 传递/Transitivity 【BFS+vector】
- HDU5961-搜索|模拟&思维&好题-A
- [C++]标准库类型容器
- HDU4990Reading comprehension(矩阵快速幂)
- ARM Trusted Firmware - version 1.3
- ThinkPHP框架中mysql数据库的增删改查(CURD)操作
- hdu 5965 扫雷 2016ACM/CCPC合肥赛区现场赛E
- HDU5961 传递(bfs)
- 回调函数基本理解
- 线性表的顺序实现
- Gradle in Action 中文目录
- 知识总结
- 疑惑解答---Servlet服务器与Tomcat之间关系
- LeetCode 202. Happy Number
- hdu 5968 异或密码 2016ACM/CCPC合肥赛区现场赛H
- PIC单片机入门_汇编/混编/C编比较