[蓝桥杯]PREV-12.历届试题_危险系数
问题描述
抗日战争时期,冀中平原的地道战曾发挥重要作用。 地道的多个站点间有通道连接,形成了庞大的网络。但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系。 我们来定义一个危险系数DF(x,y): 对于两个站点x和y (x != y), 如果能找到一个站点z,当z被敌人破坏后,x和y不连通,那么我们称z为关于x,y的关键点。相应的,对于任意一对站点x和y,危险系数DF(x,y)就表示为这两点之间的关键点个数。 本题的任务是:已知网络结构,求两站点之间的危险系数。 输入格式
输入数据第一行包含2个整数n( <= n <= ), m( <= m <= ),分别代表站点数,通道数; 接下来m行,每行两个整数 u,v ( <= u, v <= n; u != v)代表一条通道; 最后1行,两个数u,v,代表询问两点之间的危险系数DF(u, v)。 输出格式
一个整数,如果询问的两点不连通则输出-.
样例输入 样例输出
题目描述
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define Max_ 3000 typedef struct node node_t;
typedef struct node
{
int n; //下一个站点
node_t *next;
}node; int n,m,u,v,res;
int vis[Max_]; //标记站点是否被访问
int walk[Max_]; //记录单次行走路径的站点
int use[Max_]; //标记成功路径下的站点次数
node *e[Max_]; //邻接表,记录各站点之间的联系 void add_edge(int x,int y)//添加两站点之间的边
{
node *p;
p = (node*)malloc(sizeof(node));
p->n = y;
p->next = e[x];
e[x] = p;
return ;
} void init()//初始化
{
int i,x,y; memset(vis,,sizeof(vis));
memset(walk,,sizeof(walk));
memset(use,,sizeof(use));
for (i= ; i<=n ; i++)
e[i] = NULL; scanf("%d%d",&n,&m); //站点,通道数 for (i= ; i<m ; i++)
{
scanf("%d%d",&x,&y);
add_edge(x,y); //无向图,双向
add_edge(y,x);
}
scanf("%d%d",&u,&v); //起点,终点 return ;
} void DF(int x,int step)
{
node *p = e[x];
walk[step] = x; //记录当前路径的站点 if (x == v)
{
res ++; //成功路径的次数+1
for (x= ; x<step ; x++)
use[walk[x]]++; //标记成功路径下的站点
return ;
} while (p != NULL)
{
if (vis[p->n] == )//下一个站点未被访问
{
vis[p->n] = ;
DF(p->n,step+);
vis[p->n] = ;
}
p = p->next;//查找当前与站点连接的下一个站点
} return ;
} int main(void)
{
int i,k;
init();
k = res = ; vis[u] = ; //标记起点访问
DF(u,); for (i= ; i<=n ; i++)
if (use[i]==res)//站点标记数,与成功路径数相同,即为u与v的关键点
k ++; printf("%d",k-);
return ;
}
C解法
错误:理解为寻找最短路径,实际是寻找能被多次抵达终点的站点数(与成功抵达终点的次数相同)
解题思路:
建立站点之间联系,遍历能够抵达终点的路径,并对成功路径上的站点做次数+1
当遍历完成后,查找与成功次数相同的站点(即该站点与抵达终点有必然关系)
[蓝桥杯]PREV-12.历届试题_危险系数的更多相关文章
- 蓝桥杯练习系统历届试题 剪格子 dfs
问题描述 如下图所示,3 x 3 的格子中填写了一些整数. +--*--+--+|10* 1|52|+--****--+|20|30* 1|*******--+| 1| 2| 3|+--+--+--+ ...
- 蓝桥杯练习系统历届试题 带分数 dfs
问题描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 + 3546 / 197. 注意特征:带分数中,数字1~9分别出现且只出现一次( ...
- 【蓝桥杯单片机12】实时时钟DS1302的基本操作
[蓝桥杯单片机12]实时时钟DS1302的基本操作 广东职业技术学院 欧浩源 实时时钟DS1302几乎是蓝桥杯“单片机设计与开发”每年必考的内容,虽然在竞赛现场有提供一个底层读写寄存器的库文件,但是作 ...
- [蓝桥杯]PREV-22.历届试题_国王的烦恼
问题描述 C国由n个小岛组成,为了方便小岛之间联络,C国在小岛间建立了m座大桥,每座大桥连接两座小岛.两个小岛间可能存在多座桥连接.然而,由于海水冲刷,有一些大桥面临着不能使用的危险. 如果两个小岛间 ...
- [蓝桥杯]PREV-44.历届试题_青蛙跳杯子
问题描述 X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙 ...
- [蓝桥杯]PREV-10.历届试题_幸运数
问题描述 幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的“筛法”生成 . 首先从1开始写出自然数1,,,,,,.... 就是第一个幸运数. 我们从2这个数开始.把所有序号能被2整除的项删除,变 ...
- [蓝桥杯]PREV-27.历届试题_蚂蚁感冒
问题描述 长100厘米的细长直杆子上有n只蚂蚁.它们的头有的朝左,有的朝右. 每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒. 当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行. 这些蚂蚁中,有1只蚂 ...
- [蓝桥杯]PREV-26.历届试题_最大子阵
问题描述 给定一个n*m的矩阵A,求A中的一个非空子矩阵,使这个子矩阵中的元素和最大. 其中,A的子矩阵指在A中行和列均连续的一块. 输入格式 输入的第一行包含两个整数n, m,分别表示矩阵A的行数和 ...
- [蓝桥杯]PREV-25.历届试题_城市建设
问题描述 栋栋居住在一个繁华的C市中,然而,这个城市的道路大都年久失修.市长准备重新修一些路以方便市民,于是找到了栋栋,希望栋栋能帮助他. C市中有n个比较重要的地点,市长希望这些地点重点被考虑.现在 ...
随机推荐
- kaptcha生成java验证码
kaptcha工作的原理是调用 com.google.code.kaptcha.servlet.KaptchaServlet,生成一个图片.同时将生成的验证码字符串放到 HttpSession中. 1 ...
- 最新工控\建模仿真\组态\监控集成开发平台源码解决方案2019 ---所有VC++源码100%提供!
使用E-Form++可视化企业版本,构建属于自己的专业工控.建模仿真. 监控组态.培训仿真平台! -- 100%源码 (全部采用VC++/MFC编写,支持.NET, Java, Web, Delphi ...
- C++入门程序作业1
将一个int A[]={ , , ,}定义的可能重复的数字去掉重复的元素. 了解向量,容器如何使用,size,地址的关系,理解unique erase函数的返回值是什么参数 结果:将1,1,1,2 ...
- 如何使用HTML5的WebSocket实现网页与服务器的双工通信(二)
本系列服务端双工通信包括两种实现方式:一.使用Socket构建:二.使用WCF构建.本文为使用WCF构建服务端的双工通信,客户端同样使用Html5的WebSocket技术进行调用. 一.创建WCF服务 ...
- 《团队-爬虫豆瓣top250项目-团队一阶段互评》
团队名称:咣咣踹电脑 学号:2015035107217姓名:耿文浩 得分10 原因:组长带领的好,任务分配的好,积极帮助组员解决问题 学号:2015035107213姓名:周鑫 得分8 原因:勇于分担 ...
- fdisk语法
Linux下的fdisk功能是极其强大的,用它可以划分出最复杂的分区,下面简要介绍一下它的用法: 对于IDE硬盘,每块盘有一个设备名:对应于主板的四个IDE接口,设备名依次为:/dev/hda,/de ...
- C++进程间通信的十一种方法
转载: https://www.cnblogs.com/swunield/articles/3893250.html 进程通常被定义为一个正在运行的程序的实例,它由两个部分组成: 一个是操作系统用来管 ...
- Python学习第六课
Python学习第六课 课前回顾 列表 创建 通过 [] :写在[]里,元素之间用逗号隔开 对应操作: 查 增 append insert 改(重新赋值) 删除(remove del pop(删除后会 ...
- ln 软链
ln -s a b 中的 a 就是源文件,b是链接文件名,其作用是当进入b目录,实际上是链接进入了a目录 如上面的示例,当我们执行命令 cd /gamestat/的时候 实际上是进入了 /hom ...
- 491. Increasing Subsequences
这种increasing xxx 题真是老客户了.. 本题麻烦点在于不能重复, 但是和之前的那些 x sum的题目区别在于不能排序的 所以.... 我还是没搞定. 看了一个Java的思路是直接用set ...