因为是出边与终点直接或间接相连,所以将边反向,从终边开始,将所有终边能到达的点都打上标记
因为是最短路,所以不需要处理重边和自环,于是再跑最短路就好
题目关键:
路径上的所有点的出边所指向的点都直接或间接与终点连通

这句话的意识也就是变相的告诉我们,对于一个点x, 他的一条出边连的点y并不能直接或间接的与终点相连,此时我们要给x打上标记
因此,我们在最初从终点开始扫的仅仅是终点能到达的,对于终点不能到达的,我们最后要单独把他们的父节点(方便理解的说法)安排上
但是如果只使用一个标记数组,会出现后效性,所以我们要使用两个标记数组

处理完后跑最短路即可

此题学会的操作:在特定时候,为了简化问题,可以将边反向

此题踩到的雷:kill是关键词,然后吃了两发ce(本来可以1A)

 #include<bits/stdc++.h>
#define uint unsigned int
using namespace std;
const int maxm = ;
const int maxn = ;
struct shiki {
int y, net;
}e[maxm];
int lin[maxm], len = ;
int n, m, flag;
int s, t;
bool kil[maxn], vis[maxn];
int dis[maxn]; inline int read() {
int x = , y = ;
char ch = getchar();
while(!isdigit(ch)) {
if(ch == '-') y = -;
ch = getchar();
}
while(isdigit(ch)) {
x = (x << ) + (x << ) + ch - '';
ch = getchar();
}
return x * y;
} inline void insert(int xx, int yy) {
e[++len].net = lin[xx];
e[len].y = yy;
lin[xx] = len;
} void find_your_brother(int t) {
vis[t] = kil[t] = ;
for(int i = lin[t]; i; i = e[i].net)
if(!vis[e[i].y]) find_your_brother(e[i].y);
} queue<int> q;
inline void spfa(int st) {
memset(vis, , sizeof(vis));
memset(dis, 0x3f3f3f, sizeof(dis));
flag = dis[];
q.push(st); vis[st] = , dis[st] = ;
while(!q.empty()) {
int k = q.front(); q.pop();
vis[k] = ;
for(int i = lin[k]; i; i = e[i].net) {
int to = e[i].y;
if(!kil[to]) continue;
if(dis[to] > dis[k] + ) {
dis[to] = dis[k] + ;
if(!vis[to]) {
vis[to] = ;
q.push(to);
}
}
}
}
} int main() {
n = read(), m = read();
for(int i = ; i <= m; ++i) {
int x, y;
x = read(), y = read();
insert(y, x);//反向建边
}
s = read(), t = read();
find_your_brother(t);
for(register uint i = ; i <= n; ++i) {
if(!vis[i])
for(int j = lin[i]; j; j = e[j].net)
if(kil[e[j].y]) kil[e[j].y] = ;
}
spfa(t);
if(dis[s] >= flag) cout << - << '\n';
else cout << dis[s] << '\n';
return ;
}

luoguP2296 寻找道路的更多相关文章

  1. NOIP2014 寻找道路

    2.寻找道路 (road.cpp/c/pas) [问题描述] 在有向图G中,每条边的长度均为1,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1.路径上的所有点的出边所指 ...

  2. Codevs 3731 寻找道路 2014年 NOIP全国联赛提高组

    3731 寻找道路 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 在有向图G中,每条边的长度均为1,现给定起点和终点,请你在图中找 ...

  3. 洛谷P2296 寻找道路 [拓扑排序,最短路]

    题目传送门 寻找道路 题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点 ...

  4. 【DFS】【图论】NOIP2014寻找道路

    [NOIP2014]寻找道路 题目描述 Description 在有向图G中,每条边的长度均为1,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1.路径上的所有点的出边所 ...

  5. 【洛谷P2296】[NOIP2014]寻找道路

    寻找道路 题目链接 这道题非常的水,按照题意, 先反向建边,从终点搜索,标记出可以到达终点的点 然后枚举一遍,判断出符合条件1的点 再从起点搜索一遍就可以了 #include<iostream& ...

  6. 洛谷P2296 寻找道路==codevs3731 寻找道路

    P2296 寻找道路 题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点 ...

  7. noip寻找道路

    题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点连通. 2 .在满足条 ...

  8. 洛谷——P2296 寻找道路

    P2296 寻找道路 题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点 ...

  9. luogu 2296 寻找道路 (搜索)

    luogu 2296 寻找道路 题目链接:https://www.luogu.org/problemnew/show/P2296 从终点bfs或者dfs,找出所有终点能到达的点. 然后再从1到n看一下 ...

随机推荐

  1. [codeforces] 633C Spy Syndrome 2

    原题 Trie树+dp 首先,我们可以简单的想到一种dp方式,就是如果这一段可以匹配并且可以与前一段接上,那么更新dp[i]为当前字符串的编号,然后倒推就可以得到答案. 但是,显然我们不能O(m)比较 ...

  2. How to turn off the binary log for mysqld_multi instances?

    Q: MySQL supports running multiple mysqld on the same server. One of the ways is to use mysqld_multi ...

  3. HDU3488:Tour(KM算法)

    Tour Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Submis ...

  4. HTTP中的URL长度限制

    首先,其实http 1.1 协议中对url的长度是不受限制的,协议原文: The HTTP protocol does not place any a priori limit on the leng ...

  5. WEB-INF 有关的目录路径问题总结

    1.资源文件只能放在WebContent下面,如 CSS,JS,image等.放在WEB-INF下引用不了. 2.页面放在WEB-INF目录下面,这样可以限制访问,提高安全性.如JSP,html 3. ...

  6. Round 0: Regionals 2010 :: NEERC Eastern Subregional

    Round 0: Regionals 2010 :: NEERC Eastern Subregional 贴吧题解(官方)? 网上的题解 水 A Murphy's Law 题意:Anka拿着一块涂着黄 ...

  7. shell之流程控制

    一.if语句.while.for循环各种小例题 1.用户验证 [root@bogon ~]# cat buer.sh #!/bin/bash #user='buer' #password='1234. ...

  8. 【BZOJ1976】能量魔方 [最小割]

    能量魔方 Time Limit: 10 Sec  Memory Limit: 64 MB[Submit][Status][Discuss] Description 小C 有一个能量魔方,这个魔方可神奇 ...

  9. bzoj 1009 DP+矩阵加速

    我们用DP来解决这个问题 W[I,J]表示准考证的第I位,和不吉利的数匹配到了第J位的方案数,这个状态的表示也可以看成 当前到第I位了,准考证的后J位是不吉利的数的前J位,的方案数 那么我们最后的an ...

  10. [Leetcode Week4]H-Index

    H-Index题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/h-index/description/ Description Given an arr ...