• Codeforces Round #625 (Div. 1, based on Technocup 2020 Final Round)B(反向建图,BFS最短路)


    反向建图,边权为1,bfs跑最短路,记录分叉个数。

     1 #define HAVE_STRUCT_TIMESPEC
     2 #include<bits/stdc++.h>
     3 using namespace std;
     4 int a[200007];
     5 int dis[200007];
     6 int vis[200007];
     7 struct node{
     8     int v,next_;
     9 }e[200007];
    10 int cnt=0;
    11 int last[200007];
    12 void add_edge(int x,int y){
    13     e[++cnt].v=y;
    14     e[cnt].next_=last[x];
    15     last[x]=cnt;
    16 }
    17 int num[200007];
    18 void bfs(int x){
    19     dis[x]=1;
    20     num[x]=1;
    21     queue<int>q;
    22     q.push(x);
    23     while(!q.empty()){
    24         int u=q.front();
    25         q.pop();
    26         for(int i=last[u];i;i=e[i].next_){
    27             int v=e[i].v;
    28             if(dis[v]==0){
    29                 q.push(v);
    30                 dis[v]=dis[u]+1;
    31             }
    32             if(dis[v]==dis[u]+1)
    33                 ++num[v];//分叉个数
    34         }
    35     }
    36 }
    37 int mn=0,mx=0;
    38 int main(){
    39     ios::sync_with_stdio(false);
    40     cin.tie(NULL);
    41     cout.tie(NULL);
    42     int n,m;
    43     cin>>n>>m;
    44     for(int i=1;i<=m;++i){
    45         int x,y;
    46         cin>>x>>y;
    47         add_edge(y,x);
    48     }
    49     int k;
    50     cin>>k;
    51     for(int i=1;i<=k;++i)
    52         cin>>a[i];
    53     bfs(a[k]);
    54     for(int i=2;i<=k;++i){
    55         if(dis[a[i-1]]!=dis[a[i]]+1){//不是最短路,一定可以分叉
    56             ++mx;
    57             ++mn;
    58         }
    59         else if(num[a[i-1]]>1)//当前结点有多个分叉可选,只影响最大值
    60             ++mx;
    61     }
    62     cout<<mn<<" "<<mx;
    63     return 0;
    64 }
  • 相关阅读:
    c# 泛型总结
    透过字节码分析java基本类型数组的内存分配方式。
    c#索引器
    redis在asp.net 中的应用
    Unity3D shaderLab
    Unity3d Asset Store 打不开
    C# 类型转换的开销
    [转]权重算法
    Coroutine的原理以及实现
    在Unity3D里使用WinForm
  • 原文地址:https://www.cnblogs.com/ldudxy/p/12394583.html
Copyright © 2020-2023  润新知