寻找道路(NOIP2014)神奇之题。。
这道题嘛。。
首先根据题目,我们要先知道哪些点能够到达终点。(反向BFS)
然后我们再求最短路的途中,必须随时判断周围的点是否被第一次BFS标记过。、
所以再来一次BFS。
数组记得清零,不然会炸。。
下面贴代码
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,num=,s,tt;
int q[];
int step[];
int head[];
bool vis[];
int a[],b[];
struct edge{
int to,next;
}g[];
void ins(int u,int v)
{
g[++num].next=head[u];
head[u]=num;
g[num].to=v;
}
void bfs1(int last){
vis[last]=true;
int h=,t=;
q[h]=last;
while(h<=t)
{
int tmp=q[h];
for(int i=head[tmp];i;i=g[i].next)
if(!vis[g[i].to])
{
vis[g[i].to]=true;
q[++t]=g[i].to;
}
h++;
}
}
bool chubian(int q){
for(int i=head[q];i;i=g[i].next)
if(!vis[g[i].to]) return false;
return true;
}
bool bfs2(int first){
memset(q,,sizeof(q));
int h=,t=;
q[h]=first;
while(h<=t)
{
int tmp=q[h++];
if(!chubian(tmp))continue;
for(int i=head[tmp];i;i=g[i].next)
if(step[g[i].to]==)
{
step[g[i].to]=step[tmp]+;
if(g[i].to==tt){printf("%d\n",step[tt]);return true;}
q[++t]=g[i].to;
}
}
return false;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
scanf("%d%d",&a[i],&b[i]);
ins(b[i],a[i]);
}
scanf("%d%d",&s,&tt);
bfs1(tt);
memset(head,,sizeof(head));
memset(g,,sizeof(g));
num=;
for(int i=;i<=m;i++)
ins(a[i],b[i]);
if(!bfs2(s))printf("-1\n");
}
寻找道路(NOIP2014)神奇之题。。的更多相关文章
- NOIP2014 day2 t2 寻找道路
寻找道路 NOIP2014 day2 t2 描述 在有向图 G 中,每条边的长度均为 1,现给定起点和终点,请你在图中找一条从起点到 终点的路径,该路径满足以下条件: 1.路径上的所有点的出边所指向的 ...
- 【DFS】【图论】NOIP2014寻找道路
[NOIP2014]寻找道路 题目描述 Description 在有向图G中,每条边的长度均为1,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1.路径上的所有点的出边所 ...
- NOIP2014 寻找道路
2.寻找道路 (road.cpp/c/pas) [问题描述] 在有向图G中,每条边的长度均为1,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1.路径上的所有点的出边所指 ...
- 【洛谷P2296】[NOIP2014]寻找道路
寻找道路 题目链接 这道题非常的水,按照题意, 先反向建边,从终点搜索,标记出可以到达终点的点 然后枚举一遍,判断出符合条件1的点 再从起点搜索一遍就可以了 #include<iostream& ...
- 洛谷P2296 寻找道路 [拓扑排序,最短路]
题目传送门 寻找道路 题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点 ...
- 【NOIP14 D2T2】寻找道路
Source and Judge NOIP2014 提高组 D2T2Luogu2296Caioj1567 Problem [Description] 在有向图 G 中,每条边的长度均为 1,现给定起点 ...
- Codevs 3731 寻找道路 2014年 NOIP全国联赛提高组
3731 寻找道路 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 在有向图G中,每条边的长度均为1,现给定起点和终点,请你在图中找 ...
- 洛谷P2296 寻找道路==codevs3731 寻找道路
P2296 寻找道路 题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点 ...
- noip寻找道路
题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点连通. 2 .在满足条 ...
- 洛谷——P2296 寻找道路
P2296 寻找道路 题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点 ...
随机推荐
- 004---Django简单示例
一.MVC与MTV模型 在web开发领域里著名的MVC模式,所谓MVC就是把web应用分为模型(M).控制器(C).视图(V)三层,达到了解耦的效果. 一次完整的请求如图: 但是django用的是M ...
- 36-应用Jwtbearer Authentication
新建.net core webapi项目 E:\coding\netcore>dotnet new webapi --name JwtAuthSample 创建需要用到的实体对象类 namesp ...
- MySQL忘记密码怎么重置
1打开mysql.exe和mysqld.exe所在的文件夹,复制路径地址 输入命令 mysqld --skip-grant-tables 回车,此时就跳过了mysql的用户验证.注意输入此命令之后 ...
- urllib使用二
urlopen方法返回一个html 对html使用info()方法返回HTTPMessage对象实例 import urllib def print_list(lists): for i in lis ...
- 使用windows live writer写cnblog-1 安装wlr
Writer:在本地编辑有声在色的博客内容,发布到你的网络博客! 离线安装文件下载地址:http://dx1.itopdog.cn/soft/wlsetup-all.rar 下了好几个离线版本的, ...
- dubbo的rpc异常
Exception in thread "main" com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method ...
- Web安全2--XSS&CSRF
1.XSS(跨站脚本攻击) 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS ...
- 用JAX-WS在Tomcat中发布WebService
JDK中已经内置了Webservice发布,不过要用Tomcat等Web服务器发布WebService,还需要用第三方Webservice框架.Axis2和CXF是目前最流行的Webservice框架 ...
- python3知识点之---------字符串的介绍
1. 定义 其实字符串就是一系列字符,用引号括起来的就是字符串,其中的引号可以是单引号或者双引号. 比如 "This is a string" 'This is a strin ...
- HTML--留
1.html图像 <p> 这是个图像<img src=“\路径\” alt=“图像不显示不出来时代替图片” width=“1” height=“1” > </p ...