zoj 3811 条件下判定某遍历序列的合法性/ 一遍 dfs
来源:互联网 发布:数据库系统概论 pdf 编辑:程序博客网 时间:2024/06/10 05:56
题意:在某些点上安装首次访问时候会报警的机器,给出报警嗲你的顺序,问是否合法。
思路:按所给的序列,每个进来时判断这个点目前能否达到(第一个可达总是),若能,则该点进行扩展遍历所有没有报警器的点,遇到有的报警器的标记可达就返回。
预判:判断原图连图性。
#include<iostream>#include<queue>#include<cstdio>#include<vector>#include<cstring>using namespace std;vector<vector<int> >g(100010);int has[100010];vector<int>jud;int n,m,k,l;int vis[100010];bool bfs(){ memset(vis,0,sizeof(vis)); queue<int>q; q.push(1); vis[1]=1; while(!q.empty()) { int cur=q.front(); q.pop(); for(int i=0;i<g[cur].size();i++) { int v=g[cur][i]; if(vis[v]==0) { vis[v]=1; q.push(v); } } } for(int i=1;i<=n;i++) { if(vis[i]==0) { return 0; } } return 1;}void dfs(int u){ if(has[u]==1&&vis[u]==0) { vis[u]=1; return ; } for(int i=0;i<g[u].size();i++) { int v=g[u][i]; if(vis[v]==0&&has[v]==0) { vis[v]=1; dfs(v); } else if(vis[v]==0) { dfs(v); } } return ;}void init(){ for(int i=0;i<=n;i++) { has[i]=0; g[i].clear(); vis[i]=0; } jud.clear();}int main(){ int T; scanf("%d",&T); while(T--) { scanf("%d%d%d",&n,&m,&k); init(); int tx,ty; for(int i=0;i<k;i++) { scanf("%d",&tx); has[tx]=1; } for(int i=0;i<m;i++) { scanf("%d%d",&tx,&ty); g[tx].push_back(ty); g[ty].push_back(tx); } scanf("%d",&l); for(int i=0;i<l;i++) { scanf("%d",&tx); jud.push_back(tx); } if(l!=k||bfs()==0) { printf("No\n");continue; } memset(vis,0,sizeof(vis)); bool marks=1; vis[jud[0]]=1; for(int i=0;i<l;i++) { if(vis[jud[i]]==0) { marks=0;break; } dfs(jud[i]); } if(marks) printf("Yes\n"); else printf("No\n"); } return 0;}
0 0
- zoj 3811 条件下判定某遍历序列的合法性/ 一遍 dfs
- hdu1050 一遍遍历
- candy-leetcode :只需要遍历一遍的解法
- 遍历一遍找到第一个出现一次的字符
- 样本方差的快速计算-遍历一遍样本集
- 出栈序列的合法性
- 只遍历一遍数组,求方差
- 【数据结构】 出栈序列的合法性【面试】
- zoj 2100(dfs深度优先遍历)
- 只允许遍历一遍字符串,找出字符串中第一个只出现一次的字符
- 只允许遍历一遍字符串,找出字符串中第一个只出现一次的字符
- 求第一次只出现一次的字符(只要求遍历一遍)
- 133. Clone Graph【M】【73】【图的遍历】【再来一遍】【vip】
- 初始化执行 这里把所有的接口都遍历一遍 存到权限表里面
- 只允许遍历一遍字符串,找出字符串中第一个只出现一次的字符
- zoj 3811(图 + dfs)
- zoj 1015(玹图的判定)
- 二分图的判定模板(dfs,bfs)
- PHP脚本简单应用
- Centos5.8下安装QT5.3.1
- 流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls)
- 【源码分享下载】每日更新之Android项目源码---手机天气预报系统
- Matlab编译mex文件:
- zoj 3811 条件下判定某遍历序列的合法性/ 一遍 dfs
- java 时间戳和PHP时间戳 的转换 php time()
- Android全局变量的定义与使用
- VisionMobile:没人谈及的Apple Watch的三个关键特点
- 搭建企业级搜索服务Solr
- HTTP应用流媒体分析
- sublime打开包含中文的文件乱码
- html5 canvas 一个漫天飞雪的效果
- Code Composer Studio 3.3 to 5.5 导入工程 问题————1