问题描述
抗日战争时期,冀中平原的地道战曾发挥重要作用。地道的多个站点间有通道连接,形成了庞大的网络。但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系。我们来定义一个危险系数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

题目描述

代码如下:

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 #define Max_ 3000
 5
 6 typedef struct node node_t;
 7 typedef struct node
 8 {
 9     int n;    //下一个站点
10     node_t *next;
11 }node;
12
13 int n,m,u,v,res;
14 int vis[Max_];    //标记站点是否被访问
15 int walk[Max_];    //记录单次行走路径的站点
16 int use[Max_];    //标记成功路径下的站点次数
17 node *e[Max_];    //邻接表,记录各站点之间的联系
18
19
20 void add_edge(int x,int y)//添加两站点之间的边
21 {
22     node *p;
23     p = (node*)malloc(sizeof(node));
24     p->n = y;
25     p->next = e[x];
26     e[x] = p;
27     return ;
28 }
29
30 void init()//初始化
31 {
32     int i,x,y;
33
34     memset(vis,0,sizeof(vis));
35     memset(walk,0,sizeof(walk));
36     memset(use,0,sizeof(use));
37     for (i=0 ; i<=n ; i++)
38         e[i] = NULL;
39
40     scanf("%d%d",&n,&m);    //站点,通道数
41
42     for (i=0 ; i<m ; i++)
43     {
44         scanf("%d%d",&x,&y);
45         add_edge(x,y);    //无向图,双向
46         add_edge(y,x);
47     }
48     scanf("%d%d",&u,&v);    //起点,终点
49
50     return ;
51 }
52
53 void DF(int x,int step)
54 {
55     node *p = e[x];
56     walk[step] = x;    //记录当前路径的站点
57
58     if (x == v)
59     {
60         res ++;        //成功路径的次数+1
61         for (x=0 ; x<step ; x++)
62             use[walk[x]]++;    //标记成功路径下的站点
63         return ;
64     }
65
66     while (p != NULL)
67     {
68         if (vis[p->n] == 0)//下一个站点未被访问
69         {
70             vis[p->n] = 1;
71             DF(p->n,step+1);
72             vis[p->n] = 0;
73         }
74         p = p->next;//查找当前与站点连接的下一个站点
75     }
76
77     return ;
78 }
79
80 int main(void)
81 {
82     int i,k;
83     init();
84     k = res = 0;
85
86     vis[u] = 1;    //标记起点访问
87     DF(u,0);
88
89     for (i=0 ; i<=n ; i++)
90         if (use[i]==res)//站点标记数,与成功路径数相同,即为u与v的关键点
91             k ++;
92
93     printf("%d",k-1);
94     return 0;
95 }

C解法

错误:理解为寻找最短路径,实际是寻找能被多次抵达终点的站点数(与成功抵达终点的次数相同)

解题思路:

建立站点之间联系,遍历能够抵达终点的路径,并对成功路径上的站点做次数+1

当遍历完成后,查找与成功次数相同的站点(即该站点与抵达终点有必然关系)

转载于:https://www.cnblogs.com/mind000761/p/10555951.html

[蓝桥杯]PREV-12.历届试题_危险系数相关推荐

  1. 蓝桥杯经典算法 不定方程解法 蓝桥杯练习系统 历届试题 买不到的数目

    蓝桥杯经典算法 第六讲 不定方程解法   蓝桥杯算法教学与培训_蓝桥杯经典算法 第六讲 不定方程解法 不定方程的一般解法   朴素算法 public static void main(String[] ...

  2. 蓝桥杯大学组python试题_第十届蓝桥杯2019年C/C++ 大学A组省赛试题

    2019年蓝桥杯第十届软件类省赛 C/C++ 大 学 A 组 试题 A: 平方和 本题总分:5 分 [问题描述] 小明对数位中含有 2.0.1.9 的数字很感兴趣,在 1 到 40 中这样的数包括 1 ...

  3. [蓝桥杯][2013年第四届真题]危险系数(暴力+dfs)

    题目描述 问题描述 抗日战争时期,冀中平原的地道战曾发挥重要作用. 地道的多个站点间有通道连接,形成了庞大的网络.但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系. 我们来定义一个危险 ...

  4. [蓝桥杯][2013年第四届真题]危险系数-dfs+图的遍历

    题目描述 问题描述 抗日战争时期,冀中平原的地道战曾发挥重要作用. 地道的多个站点间有通道连接,形成了庞大的网络.但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系. 我们来定义一个危险 ...

  5. 蓝桥杯练习系统历届试题 翻硬币

    问题描述 小明正在玩一个"翻硬币"的游戏. 桌上放着排成一排的若干硬币.我们用 * 表示正面,用 o 表示反面(是小写字母,不是零). 比如,可能情形是:**oo***oooo 如 ...

  6. “蓝桥杯”练习系统——历届试题

    1. 核桃的数量(水题) 思路:求两个数的最大公约数可以用欧几里得算法(辗转相除法),即 a与b的最大公约数 等于 b与(a对b取余) 的最大公约数,当b等于0时,a与b的最大公约数是a.两个数的最小 ...

  7. 蓝桥杯研究生c语言试题答案,蓝桥杯试题_蓝桥杯 你有蓝桥杯历年的试题吗最好有参考答案啊 高职高专组C语言的 有的话麻烦你发给我 万分感谢_淘题吧...

    ❶ 蓝桥杯 你有蓝桥杯历年的试题吗最好有参考答案啊. 高职高专组C语言的 有的话麻烦你发给我 万分感谢 我有真题.但是老师没给答案 ❷ 为什么蓝桥杯试题集评测老是错 楼上的网友说的很简单,实际上因为每 ...

  8. 蓝桥杯单片机国赛客观题_蓝桥杯单片机比赛历年试题获取

    蓝桥杯单片机比赛历年试题获取!!! 准备蓝桥杯蓝桥杯比赛除了对板子各个模块的熟悉外,还有一件事,那就是把它们综合起来运用.当你单独使用板子上的某一个模块时,可能不会有什么问题,甚至对已经反复练习过后的 ...

  9. 蓝桥杯javaB决赛历届真题6-10届

    蓝桥杯javaB决赛历届真题 第六届 T1 分机号 T2 五星填数 T3 显示二叉树 T4 穿越雷区 T5 表格计算 T6 铺瓷砖 第七届 T1 愤怒小鸟 T2 反幻方 T3 打靶 T4 路径之谜 T ...

  10. 蓝桥杯单片机设计与开发_标准模板

    蓝桥杯单片机设计与开发_标准模板 一.前言 首先,这篇文章是笔者第一次在 CSDN 上写博文,较为生疏,读者若有任何意见,欢迎大家在评论区交流! 笔者目前为一名大二学生,参加了2021年蓝桥杯单片机设 ...

最新文章

  1. bugku 闪得好快
  2. html登录注册的正则,怎么用html5编写用户注册验证程序
  3. 模拟退火与遗传与蚁群算法
  4. 7005.ADS-B建设和规划情况介绍
  5. 何小鹏谈财务自由:痛苦彷徨,7块钱的快餐只能偷偷吃
  6. resnet50代码_十余行代码完成迁移学习,百度PaddleHub实战解读
  7. oracle数据库基本讲解(菜鸟篇)
  8. IDEA中使用JUnit---java测试类
  9. 免费数据集 公开数据集下载 网站
  10. 爱普生690k打印针测试软件_针式打印机断针测试软件_9针、24针打印机断针测试 V1.3 下载...
  11. 【转摘】芯片的本质是什么
  12. ico的尺寸_Favicon.ico浏览器图标文件制作和正确使用
  13. “不限流量卡”真的不限量,但是却限制了这些!
  14. 全排列的java算法_全排列算法原理和实现
  15. 虚幻蓝图数据传递_数据产品的战略蓝图
  16. Docker 入坑指南
  17. 电脑编程入门需要学什么呢
  18. 【Cornerstone Mac系统下的安装】
  19. MySQL - 03DDL之数据表
  20. [多图]非线性格兰杰因果检验,eveiws详细实现步骤

热门文章

  1. 打印学生选课清单 (25 分)
  2. css基础知识汇总3
  3. JSP教程第3讲笔记
  4. 数据结构第三章栈和队列(一)
  5. 卡通图像变形算法(Moving Least Squares)附源码
  6. Error response from daemon: OCI runtime exec failed: exec failed: container_linux.go:345:
  7. 基于随机优化算法的特征选择
  8. pyspark连接MySQL数据库,执行SQL语句,返回数据查询结果
  9. 神经网络的理解和计算
  10. java redis源码分析,慢谈 Redis 实现分布式锁 以及 Redisson 源码解析