zoukankan      html  css  js  c++  java
  • Codeforces Round #625 (Div. 2, based on Technocup 2020 Final Round) D. Navigation System(有向图,BFS,最短路)

    题意:

    n 点 m 边有向图,给出行走路径,求行走途中到路径终点最短路变化次数的最小值和最大值 。

    思路 :

    逆向广搜,正向模拟。

    #include <bits/stdc++.h>
    using namespace std;
     
    const int M=220000;
     
    vector<int> e1[M],e2[M];
    int p[M],dis[M];
     
    int main()
    {
        int n,m;cin>>n>>m;
        for(int i=0;i<m;i++){
            int u,v;cin>>u>>v;
            e1[u].push_back(v);
            e2[v].push_back(u);
        }
        int k;cin>>k;
        for(int i=0;i<k;i++) cin>>p[i];
        queue<int> q;
        q.push(p[k-1]);
        dis[p[k-1]]=1;
        while(!q.empty()){
            int u=q.front();
            q.pop();
            for(int v:e2[u]){
                if(dis[v]==0){
                    q.push(v);
                    dis[v]=dis[u]+1;
                }
            }
        }
        int mi=0,mx=0;
        for(int i=0;i<k-1;i++){
            if(dis[p[i]]!=dis[p[i+1]]+1)
                ++mi;
            for(int v:e1[p[i]]){
                if(v!=p[i+1]&&dis[p[i]]==dis[v]+1){
                    ++mx;
                    break;
                }
            }
        }
        cout<<mi<<' '<<mx<<endl;
        return 0;
    }
  • 相关阅读:
    Django部分面试题目
    网编部分
    面试题
    mysql安装
    并发编程
    集合以及深浅拷贝和和小数据池--个人一些经验总结
    稍微比较全的那种字典
    个人声明
    python
    python-pdf文件(持续更新
  • 原文地址:https://www.cnblogs.com/Kanoon/p/12519918.html
Copyright © 2011-2022 走看看