[BJ2017.X5] 公交车

题目描述

D D D 市有 n n n 个公交车站和 m m m 条公交线路,公交车站的编号为从 1 1 1 n n n 。每条公交线路会经过某些车站,如果两条公交线路有公共的公交车站,那么它们可以在公共车站相互换乘。比如线路 ( 1 , 2 , 3 , 9 ) (1,2,3,9) 1,2,3,9 和线路 ( 2 , 4 , 5 , 7 , 9 ) (2,4,5,7,9) 2,4,5,7,9 可以在 2 2 2 号车站或 9 9 9 号车站相互换乘。

从一个公交车站出发,乘客可以选择经过此站的任意公交线路运往线路上任意其他车站,还可以在下车后换乘其他线路到达其他车站,然后可以继续换乘……

小红想知道在所有 n ∗ ( n − 1 ) / 2 n*(n-1)/2 n(n1)/2 对公交车站中,有多少对是相互不可达的?

输入格式

第一行是两个正整数 n n n m m m 2 ≤ n ≤ 100 2≤n≤100 2n100 1 ≤ m ≤ 1000 1≤m≤1000 1m1000 )。

接下来m行,每行首先是一个整数 c i c_i ci 2 ≤ c i ≤ n 2≤c_i≤n 2cin),接下来是 c i c_i ci 个大小在 1 1 1 n n n 之间的互不相同的整数,表示一条公交线路。

输出格式

仅一行,是一个整数,表示有多少对相互不可达的公交车站。

样例 #1

样例输入 #1

3 1
2 1 2

样例输出 #1

2

样例输入 #2

10 4
4 1 2 3 6
3 2 4 5
3 2 4 7
3 8 9 10

样例输出 #2

21

提示:

样例1中,只有一条公交线路 ( 1 , 2 ) (1,2) 1,2 ,相互不可达的有 ( 1 , 3 ) (1,3) 1,3 ( 2 , 3 ) (2,3) 2,3 两对。

样例 2 2 2 中,有 4 4 4 条公交线路,相互不可达的车站共有 21 21 21 对。

题目分析

本题考查图的连通性问题,我们可以使用 DFS 或 BFS 对图进行遍历来求连通块的个数。

不难发现,如果一个点在一次 DFS 中被访问过,那么这个点所在的连通块中的所有点都会被访问到。因此,我们只需要对每个未访问的点进行 DFS,记录连通块的个数即可。

在 DFS 中,我们可以从当前结点出发,遍历其所有相邻结点,并将这些相邻结点标记为已访问。遍历完所有相邻结点后,递归遍历每个相邻结点即可。

代码实现

我们可以使用邻接表来储存公交车站之间的关系,然后使用 DFS 来遍历所有连通块。

下面是使用 C++ 实现的代码:

#include <iostream>
#include <vector>using namespace std;const int N = 110;int n, m;
vector<int> g[N];  // 存储公交线路信息
bool visited[N];   // 存储是否访问过该车站void dfs(int u)   // 进行深度优先搜索
{visited[u] = true;     // 标记该车站已被访问for (auto v : g[u])    // 遍历该车站的所有相邻车站if (!visited[v])   // 如果该相邻车站未被访问,则继续深度搜索dfs(v);
}int main()
{cin >> n >> m;for (int i = 0; i < m; i++){int cnt;cin >> cnt;vector<int> line(cnt);for (int j = 0; j < cnt; j++){cin >> line[j];}for (int j = 0; j < cnt; j++)for (int k = j + 1; k < cnt; k++)  // 将每条公交线路上的车站进行两两连接{g[line[j]].push_back(line[k]);g[line[k]].push_back(line[j]);}}int ans = 0;for (int i = 1; i <= n; i++)    // 枚举所有车站,进行深度优先搜索{fill(visited, visited + N, false);    // 每次搜索前将所有车站的访问状态初始化为未访问dfs(i);for (int j = i + 1; j <= n; j++)if (!visited[j])   // 如果某个车站未被搜索到,则该车站与其它车站是不可达的ans++;}cout << ans << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/145302.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Flink安装及简单使用

目录 转载处&#xff08;个人用最新1.17.1测试&#xff09; 依赖环境 安装包下载地址 Flink本地模式搭建 安装 启动集群 查看WebUI 停止集群 Flink Standalone搭建 安装 修改flink-conf.yaml配置文件 修改workers文件 复制Flink安装文件到其他服务器 启动集群 查…

4K视频一分钟大小是多少?如何转换为其他分辨率?

4K 分辨率是指大约 4,000像素的水平显示分辨率&#xff0c; 4K显示器、电视的分辨率为3840*2160&#xff1b;影院的4K分辨率为40962160。4K视频相较于常见的1080P分辨率更清晰、画面更流畅&#xff0c;然而与之对应的则是文件更大&#xff0c;更占用本地存储内存&#xff0c;在…

【计算机网络笔记十】计算机网络面试问题总结

1. 计算机网络的各层协议及作用&#xff1f; 计算机网络体系可以大致分为一下三种&#xff0c;OSI 七层模型、TCP/IP 四层模型和五层模型。 OSI 七层模型&#xff1a;大而全&#xff0c;但是比较复杂、而且是先有了理论模型&#xff0c;没有实际应用。TCP/IP 四层模型&#x…

web:[极客大挑战 2019]BabySQL

题目 点进页面显示如下 查看源代码 先尝试一下万能密码 没用&#xff0c;or被过滤了 试着双写看看 回显一串&#xff0c;也不是flag 先查询列数尝试一下&#xff0c;把union select过滤了&#xff0c;使用双写 构造payload /check.php?usernameadmin&password1 %27 ununi…

【小沐学Python】网络爬虫之urllib

文章目录 1、简介2、功能介绍2.1 urllib库和requests库2.2 urllib库的模块2.2.1 urllib.request2.2.2 urllib.error2.2.3 urllib.parse2.2.4 urllib.robotparser 2.3 入门示例 3、代码示例3.1 urlib 获取网页(1)3.2 urlib 获取网页(2) with header3.3 urllib post请求 4、urlli…

【独家工具】JMeterPerfReporter3.0正式版本,让你的JMeter更好用

Lemon-JMeterPerfReporter工具&#xff0c;是我们性能测试课程教研组根据JMeter性能测试报告的不足&#xff0c;定制开发的一个性能报告生成工具。有需要的同学&#xff0c;可以通过小编官方gitee账户下载&#xff0c;或咨询我免费获取哦&#xff01; 做过性能测试的人员都知道…

Scala第八章节

Scala第八章节 scala总目录 章节目标 能够使用trait独立完成适配器, 模板方法, 职责链设计模式能够独立叙述trait的构造机制能够了解trait继承class的写法能够独立完成程序员案例 1. 特质入门 1.1 概述 有些时候, 我们会遇到一些特定的需求, 即: 在不影响当前继承体系的情…

在线教育平台开发:数字化教育的奇妙时代

在今天的数字化时代&#xff0c;教育正在经历着前所未有的变革。在线教育平台的兴起已经改变了传统教育的局面&#xff0c;为学习者和教育者提供了无限的机会。本文将深入探讨在线教育平台开发的关键方面&#xff0c;并穿插一些实际代码示例&#xff0c;以帮助您了解如何创建一…

开源电子合同签署平台小程序源码 在线签署电子合同小程序源码 合同在线签署源码

聚合市场上各类电子合同解决方案商&#xff0c;你无需一个一个的对接电子合同厂商&#xff0c; 费时&#xff0c;费力&#xff0c;因为这个工作我们已经做了适配&#xff0c;你只需要一个接口就能使用我们的所有服务商&#xff0c; 同时你还可以享受我们的接口渠道价格。 Mini-…

自学WEB后端01-安装Express+Node.js框架完成Hello World!

一、前言&#xff0c;网站开发扫盲知识 1.网站搭建开发包括什么&#xff1f; 前端 前端开发主要涉及用户界面&#xff08;UI&#xff09;和用户体验&#xff08;UX&#xff09;&#xff0c;负责实现网站的外观和交互逻辑。前端开发使用HTML、CSS和JavaScript等技术来构建网页…

右键菜单添加 Open Git Bash

前言 在使用 TortoiseGit 作为Git的可视化工具&#xff0c;但是会经常用到命令行操作&#xff0c;一般来说&#xff0c;安装了TortoiseGit后&#xff0c;右键会出现 open git-bash here... 的命令。但是&#xff0c;可能由于某些原因&#xff0c;这个右键菜单选项不见了。下面…

wireshark of tshark tools v3.4.0版本 支持json

tshark(1) Install tshark (Wireshark) Ver.3.4.0 on CentOS7 --It must be "ps", "text", "pdml", "psml" or "fields". TCP 协议中的三次握手和四次挥手是 TCP 连接建立和关闭的过程。 三次握手 客户端向服务器发送 SYN…

数据分析三剑客之一:Numpy详解及实战

1 NumPy介绍 NumPy 软件包是Python生态系统中数据分析、机器学习和科学计算的主力军。它极大地简化了向量和矩阵的操作处理。Python的一些主要软件包&#xff08;如 scikit-learn、SciPy、pandas 和 tensorflow&#xff09;都以 NumPy 作为其架构的基础部分。除了能对数值数据…

纯css html 真实水滴效果

惯例,不多说直接上图 秉承着开源精神,我们将这段代码无私地分享给大家&#xff0c;因为我们深信&#xff0c;信息的共享和互相学习是推动科技进步的关键。我们鼓励大家在使用这段代码的同时&#xff0c;也能够将其中的原理、思想和经验分享给更多的人。 这份代码是我们团队用心…

NX 1988 如何将组件转为部件

打开组件 文件-导出-部件 指定部件名为1206&#xff0c;类选择&#xff1a;所有要导出的部件 选择完全加载 完成

idea 2021.2.3版本中隐藏target和.iml文件问题的解决

一 idea2021.2.3 版本隐藏文件 1.1 问题描述 添加隐藏文件内容后&#xff1a;没有可确定的保存按钮。无法实现添加隐藏文件。 1.2 解决办法 IDEA新建项目会自动生成一个.idea文件夹和.iml文件&#xff0c;开发中不需要对这两个文件修改&#xff0c;所以对以上文件进行隐藏处理…

SW免安装的toolbox只读问题

把SOLIDWORKSDATA 整体复制到另外的目录&#xff0c;然后这里设置目录位置。不然原始位置有只读属性

Linux常用命令(一)

目录 一、列出目录内容&#xff08;ls&#xff09; 二、切换目录&#xff08;cd&#xff09; 三、显示当前目录路径&#xff08;pwd&#xff09; 四、以树状结构显示目录内容&#xff08;tree&#xff09; 五、创建新目录&#xff08;mkdir&#xff09; 六、复制文件或目…

【Java 进阶篇】MySQL多表查询之子查询详解

在数据库查询中&#xff0c;多表查询是一项非常常见且重要的任务。它允许我们从多个相关联的表中检索和组合数据&#xff0c;以满足各种复杂的查询需求。在多表查询中&#xff0c;子查询是一种强大的工具&#xff0c;用于在查询中嵌套另一个查询。本文将深入探讨MySQL中的子查询…

HTML的相关知识

1.什么是HTML&#xff1f;基本语法 HTML: Hyper Text Markup Language &#xff08;超文本标记语言&#xff09; 超文本&#xff1f;超级文本&#xff0c;例如流媒体&#xff0c;声音、视频、图片等。 标记语言&#xff1f;这种语言是由大量的标签组成。HTML标签参考手…