hdu5961
来源:互联网 发布:mac 音频剪辑 编辑:程序博客网 时间:2024/05/16 03:38
/*hdu5691 图的传递性~~~~假如a是b的父亲节点,b是c的父亲节点,那么a就一定要是c的父亲节点,则是传递。假如 a 连接b,c,d, 则b连接c 他们是传递,假如b连接 e 则就不是传递了,这个传递的性质搞清楚就好了,唉~~~对着图看半天看不懂。后来还是搜题解看懂的。阿洗吧~~~看完题解 这就很水了 。好尴尬~~~~~~~~~~~用bfs 判断层次,如果 层次大于1 则不传递了。想想 也是的~*/#include<stdio.h>#include<string.h>#include<stdlib.h>#include<vector>#include<queue>using namespace std;#define MAX 2020#define INF 999999999vector<int>p[MAX];vector<int>q[MAX];struct node{ int x,step;};int n;char a[2030];int vis[2030];int jude()//判{ for(int i=1;i<=n;i++) { memset(vis,0,sizeof(vis)); queue<node>q; node a={i,0}; q.push(a); while(!q.empty()) { a=q.front(); q.pop(); if(a.step>=2) return 0; for(int i=0;i<p[a.x].size();i++) { int v=p[a.x][i]; if(!vis[v]) { vis[v]=1; node b={v,a.step+1}; q.push(b); } } } } return 1;}int jude2(){ for(int i=1;i<=n;i++) { memset(vis,0,sizeof(vis)); queue<node>q1; node a={i,0}; q1.push(a); while(!q1.empty()) { a=q1.front(); q1.pop(); if(a.step>=2) return 0; for(int i=0;i<q[a.x].size();i++) { int v=q[a.x][i]; if(!vis[v]) { vis[v]=1; node b={v,a.step+1}; q1.push(b); } } } } return 1;}int main(){ int t; scanf("%d",&t); while(t--) { scanf("%d",&n); for(int i=1;i<=n;i++) { p[i].clear(); q[i].clear(); } for(int i=1;i<=n;i++) { scanf("%s",a+1); for(int j=1;j<=n;j++) { if(a[j]=='P') { p[i].push_back(j); } if(a[j]=='Q') { q[i].push_back(j); } } } if(jude()&&jude2()) printf("T\n"); else printf("N\n"); }}
阅读全文
0 0
- hdu5961
- HDU5961 传递
- HDU5961-传递
- HDU5961 传递(bfs)
- hdu5961 传递(BFS)
- hdu5961 传递(图论)
- HDU5961(bitset,暴力)
- HDU5961传递(思维)
- hdu5961传递(bitset乱搞)
- ccpc合肥A题 hdu5961(bfs)
- HDU5961-搜索|模拟&思维&好题-A
- python判断一个变量是否存在
- 欢迎使用CSDN-markdown编辑器
- windows环境配置github
- hwfh第三天
- 离线部署HDP 集群(三)
- hdu5961
- OC -基础(五) 学习中。。。
- linux中swap分区的介绍
- LeetCode 43. Multiply Strings
- 【深度学习】【caffe实用工具4】笔记26 windows下使用Caffe中的源代码进行【训练】和【预测】
- ajaxFileUpload多文件上传
- Kubernetes核心原理(三)之Scheduler
- XML学习笔记
- POJ1753--Flip Game(枚举)