|洛谷|搜索|NOIP2014|P2296 寻找道路

https://www.luogu.org/problem/show?pid=2296

/*https://www.luogu.org/problem/show?pid=2296
(NOIP提高组2014), 搜索 
思路:建立反向边,从终点倒搜,标记与终点连通的点
之后再从终点倒搜一次最短路,一个点所有后继都被标记,即代表这个点可以走
*/
#include    
#include    
#include    
#include
#include    
#define ms(i,j) memset(i,j, sizeof i);    
using namespace std;
int n,m;
vector edge[10005];
vector zedge[10005];
bool vi[10005];//是否访问过 
int ind[10005];//是否与终点连通 
int s,t;
int ans = -1;
void bfs1()//处理与终点连通
{
    queue q;
    ms(ind,0);
    q.push(t); ind[t] = 1;
    while (!q.empty())
    {
        int u = q.front(); q.pop();
        for (int i=0;i q;
    ms(vi,false);
    q.push((node){t,0}); vi[t] = true;
    while (!q.empty())
    {
        node u = q.front(); q.pop();
        if (u.u==s) 
        {
            ans = u.s; return ;
        }
        for (int i=0;i


你可能感兴趣的:(搜索,洛谷)