hdu 5961 传递 ccpc 2016 合肥站
来源:互联网 发布:淘宝网商城婴儿童装 编辑:程序博客网 时间:2024/04/29 18:27
传送门
分析:
这道题非常有趣。。
可以这样想:
对于一个传递的图,那么对于
这道题要mark一下。
代码:
/*****************************************************///#pragma comment(linker, "/STACK:1024000000,1024000000")#include <map>#include <set>#include <ctime>#include <stack>#include <queue>#include <cmath>#include <string>#include <vector>#include <cstdio>#include <cctype>#include <cstring>#include <sstream>#include <cstdlib>#include <iostream>#include <algorithm>using namespace std;#define offcin ios::sync_with_stdio(false)#define sigma_size 26#define lson l,m,v<<1#define rson m+1,r,v<<1|1#define slch v<<1#define srch v<<1|1#define sgetmid int m = (l+r)>>1#define ll long long#define ull unsigned long long#define mem(x,v) memset(x,v,sizeof(x))#define lowbit(x) (x&-x)#define bits(a) __builtin_popcount(a)#define mk make_pair#define pb push_back#define fi first#define se secondconst int INF = 0x3f3f3f3f;const ll INFF = 1e18;const double pi = acos(-1.0);const double inf = 1e18;const double eps = 1e-9;const ll mod = 1e9+7;const int maxmat = 10;const ull BASE = 133333331;/*****************************************************/inline void RI(int &x) { char c; while((c=getchar())<'0' || c>'9'); x=c-'0'; while((c=getchar())>='0' && c<='9') x=(x<<3)+(x<<1)+c-'0'; }/*****************************************************/const int maxn = 2020;std::vector<int> P[maxn], Q[maxn];bool vis[maxn];int N;bool bfs(int s, bool on) { queue<pair<int, int> >q; memset(vis, false, sizeof(vis)); q.push(make_pair(s, 0)); vis[s] = true; while (!q.empty()) { pair<int, int> tmp = q.front(); q.pop(); int u = tmp.first, d = tmp.second; // cout<<u<<" "<<d<<endl; if (d >= 2) return false; if (on) { for (unsigned i = 0; i < P[u].size(); i ++) { int v = P[u][i]; if (vis[v]) continue; vis[v] = true; q.push(make_pair(v, d + 1)); } } else { for (unsigned i = 0; i < Q[u].size(); i ++) { int v = Q[u][i]; if (vis[v]) continue; vis[v] = true; q.push(make_pair(v, d + 1)); } } } return true;}int main(int argc, char const *argv[]) { int T; cin>>T; while (T --) { scanf("%d", &N); for (int i = 1; i <= N; i ++) {P[i].clear(); Q[i].clear();} for (int i = 0; i < N; i ++) { char s[maxn]; scanf("%s", s); for (int j = 0; j < N; j ++) { if (s[j] == 'P') P[i + 1].push_back(j + 1); else if (s[j] == 'Q') Q[i + 1].push_back(j + 1); } } bool flag = true; for (int i = 1; i <= N; i ++) if (!bfs(i, 0)) { flag = false; break; } for (int i = 1; i <= N; i ++) if (!bfs(i, 1)) { flag = false; break; } if (flag) puts("T"); else puts("N"); } return 0;}
0 0
- hdu 5961 传递 ccpc 2016 合肥站
- 2016 ccpc 合肥 HDU 5961 传递
- HDU 5961 传递 图论 BFS (2016CCPC 合肥 A题)
- 2016ccpc 合肥站hdu 5965 扫雷
- hdu 5963 朋友 ccpc 2016 合肥站
- hdu 5965 扫雷 ccpc 2016 合肥站
- [2016CCPC合肥] 传递 图论
- hdu 5961 传递 2016ACM/CCPC合肥赛区现场赛A
- hdu 5969 最大的位或 ccpc 2016 合肥站
- 2016CCPC合肥站流水账
- 2016ccpc合肥站小记
- 2016 CCPC 合肥站游记
- 2016年CCPC合肥站
- 2016 ccpc 合肥 HDU 5963 朋友
- 2016ccpc合肥站赛后总结
- ccpc 2016 合肥站 (5道题)
- 2016 CCPC 合肥站 解题报告
- ccpc 合肥站记
- VR学习第六节:全景声场技术
- 【POJ 1364】King(差分约束+SPFA)
- Java里面的String知识详解
- 自己动手做聊天机器人 十一-0字节存储海量语料资源 - SharEDITor - 关注大数据技术
- pixhawk(ArduCopter V3.3)源码分析—导航制导部分
- hdu 5961 传递 ccpc 2016 合肥站
- Java知识点整理
- Android下静态代理和动态代理解析
- Ardupilot任务调度的理解
- 把jar包放到本地maven仓库中
- 软考—从分治法中看时间复杂度计算
- ECMAScript 6 入门 个人笔记(一)
- 基础:高通bring up camera
- 【JDK源码阅读5-util】Collection-List---Vector