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;
    }
  • 相关阅读:
    WINCE6.0 error C2220: warning treated as error问题解决
    GPRS连接失败问题
    wince下sourcessources.cmnMakefile.def的相关作用
    IMX515开发备忘
    WINCE补丁包下载地址
    IMX51+WINCE6.0平台缩写意义
    喵哈哈村的魔法考试 Round #1 (Div.2) ABCD
    Codeforces Round #402 (Div. 2) D
    Codeforces Round #402 (Div. 2) C
    Codeforces Round #402 (Div. 2) B
  • 原文地址:https://www.cnblogs.com/syx-799/p/5782853.html
Copyright © 2011-2022 走看看