[NOIp2014] luogu P2296 寻找道路
不知道是因为我菜还是别的,最近老是看错题。
题目描述
在有向图 GGG 中,每条边的长度均为 1,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件:
- 路径上的所有点的出边所指向的点都直接或间接与终点连通。
- 在满足条件 1 的情况下使路径最短。
注意:图 GGG 中可能存在重边和自环,题目保证终点没有出边。
请你输出符合条件的路径的长度。
Solution
- 定义一个点是黑点,当且仅当它能沿着边走到终点(不需满足题设条件);
- 定义一个点是YH点,当且仅当它引出的边指向的点都是黑点(起点终点都是YH点);
- 删去所有非YH点,跑 SPFA 即可。
注意反向建图
#include<cstdio>
#include<cstdlib>
#include<cstring>
const int MAXN=10010;
const int MAXM=200010;
struct node{
int x,y,next;
}e[MAXM];
int len=0;
int first[MAXN];
int n,m;
int sx,sy;
bool dis[MAXN];
int ST,ED;
int st,ed;
int q[MAXM*10];
int f[MAXN],v[MAXN];
void ins(int x,int y){
e[++len].x=x;e[len].y=y;
e[len].next=first[x];first[x]=len;
}
void init(){
memset(dis,1,sizeof(dis));dis[ED]=0;
st=1;ed=2;q[1]=ED;
while(st!=ed){
int x=q[st];
for(int i=first[x];i;i=e[i].next){
int y=e[i].y;
if(!dis[y]) continue;
dis[y]=0;
q[ed++]=y;
}
++st;
}
if(dis[ST]){
puts("-1");
exit(0);
}
bool rework[MAXN];
memset(rework,0,sizeof(rework));
for(int i=1;i<=n;++i)
if(dis[i]){
rework[i]=1;
for(int j=first[i];j;j=e[j].next)
rework[e[j].y]=1;
}
for(int i=1;i<=n;++i)
dis[i]=rework[i];
}
void spfa(){
memset(f,63,sizeof(f));f[ED]=0;
memset(v,0,sizeof(v));v[ED]=1;
st=1;ed=2;q[1]=ED;
while(st!=ed){
int x=q[st];
for(int i=first[x];i;i=e[i].next){
int y=e[i].y;
if(dis[y]) continue;
if(f[y]>f[x]+1){
f[y]=f[x]+1;
if(!v[y]){
v[y]=1;
q[ed++]=y;
}
}
}
++st;v[st]=0;
}
}
inline int read(){
int x=0; char c;
do c=getchar(); while(c<'0'||c>'9');
while(c>='0'&&c<='9')
x=x*10+c-48,c=getchar();
return x;
}
int main(){
n=read();m=read();
for(int i=1;i<=m;++i){
sx=read();sy=read();
ins(sy,sx);
}
ST=read();ED=read();
init();
spfa();
printf("%d",f[ST]);
}
[NOIp2014] luogu P2296 寻找道路的更多相关文章
- 【luogu P2296 寻找道路】 题解
题目链接:https://www.luogu.org/problemnew/show/P2296 题意:给定起点终点,找一条从起点到终点的最短路径使路上的每个点都能有路径到达终点. 我们先反着建一遍图 ...
- luogu P2296 寻找道路
题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点连通. 2 .在满足条 ...
- luogu P2296 寻找道路 |最短路
题目描述 在有向图 G 中,每条边的长度均为 1,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 路径上的所有点的出边所指向的点都直接或间接与终点连通. 在满足条件 1 的 ...
- LUOGU P2296 寻找道路 (noip 2014)
传送门 解题思路 首先建一张反图,从终点dfs出哪个点直接或间接相连,然后直接跑最短路,跑的时候判断一下所连的点是否与终点相连. 代码 #include<iostream> #includ ...
- luogu 2296 寻找道路 (搜索)
luogu 2296 寻找道路 题目链接:https://www.luogu.org/problemnew/show/P2296 从终点bfs或者dfs,找出所有终点能到达的点. 然后再从1到n看一下 ...
- 洛谷P2296 寻找道路==codevs3731 寻找道路
P2296 寻找道路 题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点 ...
- 洛谷——P2296 寻找道路
P2296 寻找道路 题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点 ...
- 洛谷P2296 寻找道路 [拓扑排序,最短路]
题目传送门 寻找道路 题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点 ...
- NOIP2014 day2 t2 寻找道路
寻找道路 NOIP2014 day2 t2 描述 在有向图 G 中,每条边的长度均为 1,现给定起点和终点,请你在图中找一条从起点到 终点的路径,该路径满足以下条件: 1.路径上的所有点的出边所指向的 ...
随机推荐
- 001: html基础标签
一:浏览器内核(理解) 序言: 1:web标准 主要包括结构(Structure).表现(Presentation)和行为(Behavior)三个方面. 2:常见标签 2.1:HTML head bo ...
- 初学Spring的感觉
1.使用接口 不同的类实现同一接口后都会变成同一类型的类. spring作业1的思路 lab1: 建立一个有一个输出方法的接口类|并建一个英语类和一个数学类实现该接口. 这两个实现类都重写了那 ...
- Spark开发常用参数
Driver spark.driver.cores driver端分配的核数,默认为1,thriftserver是启动thriftserver服务的机器,资源充足的话可以尽量给多. spark.dri ...
- JVM调优(一)——参数查询和问题排查
JVM的参数类型 标准参数 -help -server -client -version -showversion -cp -classpath X参数 -Xint: 解释执行 -Xcomp:第一次使 ...
- Flask基础(07)-->正则自定义转换器
正则自定义转换器 为什么要自定义正则转换器? 因为默认转换器太过于笨重,往往不能满足我们实际业务的需求,这时候我们就需要自定义正则转换器了. 那么我们怎么自定义正则转换器呢? from flask i ...
- jQuery常用方法(六)-jQuery 工具
JQuery Utilities 方法说明 jQuery.browser .msie 表示ie jQuery.browser.version 读取用户浏览器的版本信息 jQuery.boxModel ...
- .Net Core 商城微服务项目系列(十二):使用k8s部署商城服务
一.简介 本篇我们将会把商城的服务部署到k8s中,同时变化的还有以下两个地方: 1.不再使用Consul做服务的注册和发现,转而使用k8s-dns来实现. 2.不再使用Ocelot作为业务网关,使用T ...
- ES 32 - Elasticsearch 数据建模的探索与实践
目录 1 什么是数据建模? 2 如何对 ES 中的数据进行建模 2.1 字段类型的建模方案 2.2 检索.聚合及排序的建模方案 2.3 额外存储的建模方案 3 ES 数据建模实例演示 3.1 动态创建 ...
- 从 axios 源码中了解到的 Promise 链与请求的取消
axios 中一个请求取消的示例: axios 取消请求的示例代码 import React, { useState, useEffect } from "react"; impo ...
- 执行Django数据迁移,报错 1091
问题描述 今天在Pycharm 中的Terminal下,执行数据迁移操作时,第一步: Python manage.py makemigrations ,是没有任何问题,但就是在执行真正的数据迁移时,也 ...