危险系数

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

资源约定:
峰值内存消耗(含虚拟机) < 64M
CPU消耗 < 2000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.6及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。

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

java实现第四届蓝桥杯危险系数相关推荐

  1. java实现第四届蓝桥杯剪格子

    剪格子 题目描述 如图p1.jpg所示,3 x 3 的格子中填写了一些整数. 我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是60. 本题的要求就是请你编程判定:对给定的m x n 的格子 ...

  2. java实现第四届蓝桥杯公式求值

    公式求值 输入n, m, k,输出图1所示的公式的值.其中C_n^m是组合数,表示在n个人的集合中选出m个人组成一个集合的方案数.组合数的计算公式如图2所示. 输入的第一行包含一个整数n:第二行包含一 ...

  3. java实现第四届蓝桥杯核桃的数量

    核桃的数量 题目描述 小张是软件项目经理,他带领3个开发组.工期紧,今天都在加班呢.为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑).他的要求是: 各组的核桃数量必须相同 各组内必须能平分核桃( ...

  4. java实现第四届蓝桥杯大臣的旅费

    大臣的旅费 题目描述 很久以前,T王国空前繁荣.为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市. 为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大 ...

  5. java实现第四届蓝桥杯好好学习

    好好学习 汤姆跟爷爷来中国旅游.一天,他帮助中国的小朋友贴标语.他负责贴的标语是分别写在四块红纸上的四个大字:"好.好.学.习".但是汤姆不认识汉字,他就想胡乱地贴成一行. 请你替 ...

  6. java实现第四届蓝桥杯猜灯谜

    猜灯谜 题目描述 A 村的元宵节灯会上有一迷题: 请猜谜 * 请猜谜 = 请边赏灯边猜 小明想,一定是每个汉字代表一个数字,不同的汉字代表不同的数字. 请你用计算机按小明的思路算一下,然后提交&quo ...

  7. java实现第四届蓝桥杯有理数类

    有理数类 题目描述有理数就是可以表示为两个整数的比值的数字.一般情况下,我们用近似的小数表示.但有些时候,不允许出现误差,必须用两个整数来表示一个有理数.这时,我们可以建立一个"有理数类&q ...

  8. java实现第四届蓝桥杯振兴中华

    振兴中华 题目描述 小明参加了学校的趣味运动会,其中的一个项目是:跳格子. 地上画着一些格子,每个格子里写一个字,如下所示:(也可参见p1.jpg) 从我做起振 我做起振兴 做起振兴中 起振兴中华 比 ...

  9. 金蝉素数c语言,算法笔记_204:第四届蓝桥杯软件类决赛真题(Java语言C组)

    前言:以下代码仅供参考,若有错误欢迎指正哦~ 1好好学习 汤姆跟爷爷来中国旅游.一天,他帮助中国的小朋友贴标语.他负责贴的标语是分别写在四块红纸上的四个大字:"好.好.学.习".但 ...

最新文章

  1. 刚开始学python,写的几个小脚本
  2. ubuntu 下使用KVM安装redhat/winxp
  3. java url 返回值_java提交url后返回值怎么取
  4. WCF、WebAPI、WebService之间的区别
  5. linux安装软件时提示找不到镜像的问题:Couldn't resolve host 'mirrorlist.centos.org'
  6. ckplayer播放器 直播
  7. 如何快速识别图片中的字体是什么字体
  8. php期末作业总结,期末考试总结与反思(精选6篇)
  9. oracle条件索引查询,Oracle复合索引用于范围查询条件
  10. 妈妈再也不用担心我的博客访问量了(一个可以刷博客访问量的小程序java)
  11. 5G协议 基本架构 专有名词简称和缩写
  12. 极具性价比的音质蓝牙耳机南卡小音舱评测
  13. 放开自己你才能走的更远
  14. 【Vue工程】001-Vite 创建 Vue-TypeScript 项目
  15. Win10隐藏状态栏图标的方法
  16. 2022KDD预讲 | 11位一作学者带你提前解锁优秀论文
  17. 性能测试指标及测试方法
  18. Goose Goose Duck
  19. iOS10 相关适配问题
  20. 安装Microsoft.UI.Xaml.2.6(WSA安卓子系统安装缺失)

热门文章

  1. Quartz-ClusterManager集群管理
  2. 美丽乡村建设网站php源码_2020最新亲测php网址导航源码全开源-清爽收录导航网站源码...
  3. 不知道这是FreeTextBox还是五笔加加的bug
  4. 使用socket的阻塞简单通信聊天工具
  5. vue 样式冲突解决
  6. 【2019暑假集训】08.09比赛总结
  7. SCI与SCIE的区别
  8. img 并排_html 解决图片文字并排显示
  9. Django(二)精美博客搭建(13)实现留言页面及留言功能
  10. 总裁演说思维是如何提高公众演讲能力?