zoukankan      html  css  js  c++  java
  • NOIP2014 day2 T2寻找道路

    #include<iostream>
    #include<cmath>
    #include<cstdlib>
    #include<cstdio>
    #include<algorithm>
    #include<string>
    #include<cstring>
    #include<vector>
    #include<deque>
    #include<queue>
    #include<stack>
    using namespace std;
    bool flag;
    int cnt,cntt,minn=9999999;
    int vis[10005],dis[10005],inq[10005];
    vector<int>v[10005],fa[10005];
    queue<int>q;
    void pre(int x){//预处理,删去不符合条件的点。 
         for(int i = 0;i < fa[x].size();i++)
            vis[fa[x][i]] = 1;
    }
    void spfa(int a){
        memset(dis,127,sizeof(dis));//距离数组初始化最大; 
        int s;
        q.push(a);
        dis[a] = 0;
        inq[a] = 1;//判断是否在队列中 
        while(!q.empty()){
            s = q.front();q.pop();//取队首。 
            for(int i = 0;i < v[s].size();i++){
                if(!vis[v[s][i]]&&dis[s]+1<dis[v[s][i]]){//目标节点合法,且距离更短, 
                    dis[v[s][i]] = dis[s]+1;//更新这个点; 
                   if(!inq[v[s][i]])
                   q.push(v[s][i]),inq[v[s][i]]=1;//把这个点加入队列。 
                }
            }
            inq[s] = 0;
        }
    }
    int main(){
        int n,m,a,b;
        freopen("road.in","r",stdin);
        freopen("road.out","w",stdout);
        scanf("%d%d",&n,&m);
        for(int i = 1;i <= m;i++){
            scanf("%d%d",&a,&b);
            v[a].push_back(b);
            fa[b].push_back(a);
        } 
        scanf("%d%d",&a,&b);
        if(!fa[b].size()){
            printf("-1
    ");
            return 0;
        }
        for(int i = 1;i <= n;i++)
           if(!v[i].size()&&i!=b)
              pre(i);//对没有出边的节点进行预处理; 
        spfa(a);
        if(dis[b]==dis[0])
           printf("-1
    ");
        else printf("%d
    ",dis[b]);
        return 0;
    }
  • 相关阅读:
    js五种继承优缺点
    golang---panic/recover
    golang---应用OOM
    golang--- context
    常用工具及日常
    golang --- pipline
    golang 竞争---翻译
    深入golang之---goroutine并发控制与通信
    rpm打包
    k8s-operator指北
  • 原文地址:https://www.cnblogs.com/syx-799/p/5782853.html
Copyright © 2011-2022 走看看