寻找道路
来源:互联网 发布:mac是什么意思 编辑:程序博客网 时间:2024/05/01 06:46
传送门
蒟蒻表示这题只会用BFS。。。
首先把输入的边反过来建,然后跑BFS,看终点可以跑到哪些点。
然后枚举所有点的邻接点,看看是否全部可以跑到终点。
然后把输入的图按照要求重构一遍。跑BFS求答案。。。
#include <cstdio>#include <iostream>#include <queue>using namespace std;const int maxm=210000;int head[maxm],to[maxm],net[maxm],cnt;int qhead[maxm],qto[maxm],qnet[maxm],qcnt;int xhead[maxm],xto[maxm],xnet[maxm],xcnt;bool flag[maxm],vis[maxm],ok[maxm];int n,m,s,t;struct node{ int x; int step;};void add(int x,int y){ cnt++; to[cnt]=y; net[cnt]=head[x]; head[x]=cnt;}void qadd(int x,int y){ qcnt++; qto[qcnt]=y; qnet[qcnt]=qhead[x]; qhead[x]=qcnt;}void xadd(int x,int y){ xcnt++; xto[xcnt]=y; xnet[xcnt]=xhead[x]; xhead[x]=xcnt;}void BFS(){ flag[t]=1; queue <int> dl; dl.push(t); while(!dl.empty()) { int d=dl.front(); dl.pop(); for(int i=xhead[d];i;i=xnet[i]) if(!flag[xto[i]]) flag[xto[i]]=1,dl.push(xto[i]); }}int bfs(){ queue <node> dl; vis[s]=1; dl.push((node){s,0}); while(!dl.empty()) { node d=dl.front(); if(d.x==t) return d.step; dl.pop(); for(int i=qhead[d.x];i;i=qnet[i]) if(!vis[qto[i]]) vis[qto[i]]=1,dl.push((node){qto[i],d.step+1}); } return -1;}int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { int x,y; scanf("%d%d",&x,&y); add(x,y);xadd(y,x); } scanf("%d%d",&s,&t); BFS(); for(int i=1;i<=n;i++) { bool f=1; for(int j=head[i];j;j=net[j]) if(!flag[to[j]]) { f=0; break; } ok[i]=f; } for(int i=1;i<=n;i++) for(int j=head[i];j;j=net[j]) if(ok[to[j]]) qadd(i,to[j]); if(flag[s]==0) { printf("-1\n"); } else printf("%d",bfs());}
阅读全文
0 0
- 寻找道路
- 寻找道路
- 寻找道路
- 寻找不同的道路
- Noip2014寻找道路题解
- NOIP2014 寻找道路
- [NOIP2014]寻找道路
- Vijos1909 寻找道路
- NOIP2014寻找道路
- codevs 寻找道路
- vijos1909【noip2014】寻找道路
- 【noip2014】寻找道路
- NOIP2014 寻找道路
- noip2014寻找道路
- CODEVS 3731 寻找道路
- 【NOIP2014】D2T2 寻找道路
- 【noip2014】tyvj4058 寻找道路
- NOIP 2014 寻找道路
- Activiti工作流框架学习(二)——使用Activiti提供的API完成流程操作
- 设计高素质的UI应该掌握这7个关键属性
- yum 安装httpd时,遇到错误apr_sockaddr_info_get() failed for kickstart;Could not reliably determine the serve
- 指定tomcat所使用的jdk版本,启动时报run Tomcat on Java XXX
- jboss简单使用--刚开始接触,感觉还是比较详细的
- 寻找道路
- 架构师之路(6)互联网架构之“高可用”
- 为什么你成了废柴
- C++ _tcscpy 解释
- Xshell常用口令
- Tensorflow使用的预训练的resnet_v2_50,resnet_v2_101,resnet_v2_152等模型预测,训练
- Adobe Audition CC 2017安装+破解
- Log4j 的配置
- 免费框架那么多,为什么选择付费的框架