目录

1 问题描述

2 解决方案

 


1 问题描述

问题描述

抗日战争时期,冀中平原的地道战曾发挥重要作用。

地道的多个站点间有通道连接,形成了庞大的网络。但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系。

我们来定义一个危险系数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

2 解决方案

具体代码如下:

import java.util.ArrayList;
import java.util.Scanner;public class Main {public static int n, m;public static int count;public static int[] DFN;public static int[] Low;public static int[] parent;public static ArrayList<Integer>[] list;public static ArrayList<Integer> point;@SuppressWarnings("unchecked")public void init() {count = 0;DFN = new int[n + 1];Low = new int[n + 1];parent = new int[n + 1];list = new ArrayList[n + 1];point = new ArrayList<Integer>();for(int i = 1;i <= n;i++)list[i] = new ArrayList<Integer>();}public void TarJan(int start, int father) {DFN[start] = ++count;Low[start] = DFN[start];parent[start] = father;int childern = 0;for(int i = 0;i < list[start].size();i++) {int j = list[start].get(i);if(DFN[j] == 0) {childern++;TarJan(j, start);Low[start] = Math.min(Low[start], Low[j]);if(parent[start] == -1 && childern > 1) {if(!point.contains(start))point.add(start);}if(parent[start] != -1 && Low[j] >= DFN[start]) {if(!point.contains(start))point.add(start);}} else if(j != parent[start]) {Low[start] = Math.min(Low[start], DFN[j]);}}}public void dfs(int a, boolean[] visited) {visited[a] = true;for(int i = 0;i < list[a].size();i++) {int j = list[a].get(i);if(visited[j] == false)dfs(j, visited);}}public void getResult(int a, int b) {TarJan(1, -1);int result = 0;for(int i = 0;i < point.size();i++) {if(point.get(i) == a || point.get(i) == b)continue;else {boolean[] visited = new boolean[n + 1];visited[point.get(i)] = true;dfs(a, visited);if(visited[b] == false) {result++;}}}System.out.println(result);}public static void main(String[] args) {Main test = new Main();Scanner in = new Scanner(System.in);n = in.nextInt();m = in.nextInt();test.init();for(int i = 1;i <= m;i++) {int u = in.nextInt();int v = in.nextInt();list[u].add(v);list[v].add(u);}int a = in.nextInt();int b = in.nextInt();test.getResult(a, b);}}

转载于:https://www.cnblogs.com/liuzhen1995/p/6825404.html

算法笔记_188:历届试题 危险系数(Java)相关推荐

  1. 算法笔记_183:历届试题 九宫重排(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干次移动,可以形成 ...

  2. 算法笔记_172:历届试题 波动数列(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 观察这个数列: 1 3 0 2 -1 1 -2 ... 这个数列中后一项总是比前一项增加2或者减少3. 栋栋对这种数列很好奇,他想知道长度 ...

  3. 蓝桥杯 历届试题 危险系数

    历届试题 危险系数 时间限制:1.0s 内存限制:256.0MB问题描述 抗日战争时期,冀中平原的地道战曾发挥重要作用.地道的多个站点间有通道连接,形成了庞大的网络.但也有隐患,当敌人发现了某个站点后 ...

  4. 问题 1433: [蓝桥杯][历届试题]危险系数(并查集and暴力)

    问题 1433: [蓝桥杯][历届试题]危险系数 时间限制: 1Sec 内存限制: 128MB 提交: 123 解决: 39 题目描述 问题描述 抗日战争时期,冀中平原的地道战曾发挥重要作用. 地道的 ...

  5. Java实现 蓝桥杯 历届试题 危险系数

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

  6. 蓝桥杯 历届试题 拉马车 java

    Prev43 历届试题 拉马车 题目如下: 问题描述:小的时候,你玩过纸牌游戏吗?有一种叫做"拉马车"的游戏,规则很简单,却很吸引小朋友.其规则简述如下:假设参加游戏的小朋友是A和 ...

  7. 算法笔记_029:约瑟夫斯问题(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 引用自<算法设计与分析基础>第三版: 约瑟夫斯问题,是以弗拉瓦斯.约瑟夫斯(Flavius Josephus)的名字命名的.约瑟夫斯是一 ...

  8. 算法笔记_226:填符号凑算式(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 匪警请拨110,即使手机欠费也可拨通! 为了保障社会秩序,保护人民群众生命财产安全,警察叔叔需要与罪犯斗智斗勇,因而需要经常性地进行体力训练和智力训 ...

  9. 算法笔记_231:网格中移动字母(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 2x3=6个方格中放入ABCDE五个字母,右下角的那个格空着.如图[1.jpg]所示. 和空格子相邻的格子中的字母可以移动到空格中,比如,图中的C和 ...

最新文章

  1. js使用计时事件制作的钟表
  2. BAT教程 :第六节(if命令讲解)
  3. git介绍和常用操作
  4. 获取socket对应的接收缓冲区中的可读数据量
  5. 自动点名系统c语言,用C语言编写一个随机点名系统
  6. Linux加固(转)
  7. 电脑太慢了最简单的办法怎么弄_电脑感染病毒的10种症状及简单处理办法 电脑中病毒的症状介绍...
  8. 微信小程序实现浮动按钮
  9. 如何一键录制4k8k高清视频?
  10. 曾抵押房子炒币、与老婆差点离婚! 如今这位80后中科院博士竟...
  11. 微信公众平台开发3-微信服务器IP接口实例(含源码)
  12. JavaScript获取当前时区 时间转换 (实用)
  13. [ vulhub漏洞复现篇 ] Tiki Wiki CMS Groupware 认证绕过漏洞CVE-2020-15906
  14. 【Excel】用公式提取Excel单元格中的汉字
  15. 当华为云WeLink遇上P40,多屏协同全场景办公有多神奇?
  16. 数据库--MYSQL高级(多表),数据库的完整性,约束,数据类型,多表实现 CRUD 操作
  17. 关于Notion导出PDF的建议
  18. 5分钟接入钉钉工作流之模板配置、钉钉接口流程发起
  19. java记账系统,基于java记账管理系统
  20. Flink-Task、SubTask、并行度

热门文章

  1. python是个啥-Python是个什么鬼?师兄用它一年发表5篇SCI!
  2. python如何编程-怎么用手机编写Python程序?
  3. 安装python步骤-从0到1,Python安装步骤详解(附基础知识简介)!
  4. python中文编码-python中文编码json中文输出问题
  5. python中文意思k-Python中_,__,__xx__的区别
  6. ubuntu查看python版本-切换Ubuntu默认python版本的两种方法
  7. python应该怎么自学-Python 应该怎么学?
  8. 不是python中用于开发用户界面的第三方库-python界面 | Tkinter图形界面开发库
  9. 疯狂python讲义视频 百度云-疯狂的python讲义 PDF 下载
  10. 自学python有哪些网站-python有哪些学习网站