zoukankan      html  css  js  c++  java
  • [蓝桥杯][历届试题]危险系数

    问题 1433: [蓝桥杯][历届试题]危险系数

    时间限制: 1Sec 内存限制: 128MB 提交: 122 解决: 38

    题目描述
    问题描述 
    抗日战争时期,冀中平原的地道战曾发挥重要作用。 
    地道的多个站点间有通道连接,形成了庞大的网络。但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系。 
    我们来定义一个危险系数DF(x,y): 
    对于两个站点x和y  (x  !=  y),  如果能找到一个站点z,当z被敌人破坏后,x和y不连通,那么我们称z为关于x,y的关键点。相应的,对于任意一对站点x和y,危险系数DF(x,y)就表示为这两点之间的关键点个数。 
    本题的任务是:已知网络结构,求两站点之间的危险系数。 
    输入
    输入数据第一行包含2个整数n(2  < =  n  < =  1000),  m(0  < =  m  < =  2000),分别代表站点数,通道数; 
    接下来m行,每行两个整数  u,v  (1  < =  u,  v  < =  n;  u  !=  v)代表一条通道; 
    最后1行,两个数u,v,代表询问两点之间的危险系数DF(u,  v)。 
    输出
    一个整数,如果询问的两点不连通则输出-1.  
    样例输入
    7  6 
    1  3 
    2  3 
    3  4 
    3  5 
    4  5 
    5  6 
    1  6  
    样例输出
    2



    解题代码如下:(深度优先搜索)

    #include<iostream>
    #include<cstring>
    using namespace std;
    bool g[1001][1001];
    int count[1001];
    int m,n;
    int u,v;
    int sum=0;
    bool vis[1001];

    int dfs(int beg)
    {
    if(beg==v)
    {
    return 1;
    }
    int flag=0;bool bo=1;
    for(int i=1;i<=n;i++)
    {
    if(i!=beg&&vis[i]==false&&g[beg][i])
    {bo=0;
    vis[i]=true;
    flag+=dfs(i);
    vis[i]=false;
    }
    }
    if(bo==1)return 0;
    count[beg]+=flag;
    return flag;
    }
    int main()
    {
    memset(g,sizeof(g),0);
    memset(vis,sizeof(vis),0);
    for(int i=0;i<1001;i++)count[i]=0;
    cin>>n>>m;int i,j;
    while(m--)
    {
    cin>>i>>j;
    g[i][j]=1;
    g[j][i]=1;
    }
    cin>>u>>v;
    int sum=dfs(u);int k=0;
    if(sum==0) cout<<-1<<endl;
    else{
    for(int i=1;i<=n;i++)if(count[i]==sum&&i!=u&&i!=v)k++;
    cout<<k<<endl;
    }
    return 0;
    }

  • 相关阅读:
    sql server登录名login和用户名user区别
    各种国内开源软件和源镜像
    pycharm不能安装第三方packages
    python embeddable版/绿色版使用pip安装其他packages
    kettle连接Oracle RAC
    Oracle recover database 不同子句区别
    DataGrip以超级管理员身份登录Oracle
    suse11挂载目录seems to be mounted read-only错误
    Centos 7安装Python 3.7
    Linux 下源码安装ngnix
  • 原文地址:https://www.cnblogs.com/linruier/p/9485212.html
Copyright © 2011-2022 走看看