<数据结构>XDOJ321.高铁网络
问题与解答
描述:
国家建设高铁网络,网络由一些连接城市的高铁线路构成。现有高铁建设情况可列为一张统计表,表中列出了每一条高铁线路直接连接的两个城市。国家的建设目标是全国每两个城市之间都可以实现高铁交通(但不一定有直接的高铁线路相连,只要能间接通过高铁线路可达即可)。问最少还要建设多少条高铁线路?
输入说明:
测试用例的第1行给出两个正整数,分别是城市数目N(<1000)和现有高铁线路数目M。随后的M行对应M条高铁线路,每行给出一对正整数,分别是该条高铁线路直接连接的两个城市的编号。为简单起见,城市从1到N编号。
输出说明:
在一行上输出最少还需要建设多少条高铁线路。
输入样例:
9 8
1 2
1 3
2 4
3 4
5 7
5 6
6 7
8 9
输出样例:
2
//高铁网络
//需要建设的高铁线路 == 连通分量数 - 1
#include<stdio.h>
#include<vector>
using namespace std;
#define MaxN 1000
vector<int> G[MaxN]; //邻接矩阵建立图G
int M, N; //城市数和已有的高铁线路数
int Connection = 0; //连通分量
void GreatG(vector<int> G[]); //建立图
int Vis[MaxN] = {false}; //DFS求连通分量数
void DFS(int u);
void DFSTrave();
int main(){
scanf("%d%d", &N,&M);
GreatG(G);
DFSTrave();
printf("%d", Connection-1);
}
void GreatG(vector<int> G[]){
int u,v,i;
for(i = 0; i < M; i++){
scanf("%d%d", &u, &v); //输入边
G[u].push_back(v); //无向图
G[v].push_back(u);
}
}
void DFSTrave(){
int u;
for(u = 1; u <= N; u++){
if(Vis[u] == false){
DFS(u);
Connection++;
}
}
}
void DFS(int u){
Vis[u] = true;
int v,i;
for(i = 0; i < G[u].size(); i++){
v = G[u][i];
if(Vis[v] == false){
DFS(v);
}
}
}
题后反思
要让整个图连通,只需要让连通分量间连通。
<数据结构>XDOJ321.高铁网络的更多相关文章
- 高并发网络编程之epoll详解(转载)
高并发网络编程之epoll详解(转载) 转载自:https://blog.csdn.net/shenya1314/article/details/73691088 在linux 没有实现epoll事件 ...
- Linux下高并发网络编程
Linux下高并发网络编程 1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时, 最高的并发数量都要受到系统对用户单一进程同时可打 ...
- 专注于HTTP的高性能高易用性网络库:Fslib.network库
博客列表页:http://blog.fishlee.net/tag/fslib-network/ 原创FSLib.Network库(目前专注于HTTP的高性能高易用性网络库) FSLib.Networ ...
- 主流芯片解决方案Ambarella的高清网络摄像机、德州仪器和控制海思
(本文由四川艾普作为数码科技有限公司 苏斌.范清华 收集) 高清网络视频监控发展到今天.正的高清时代.诸多有实力的高清摄像机厂家的产品线也逐渐完好起来,高清网络视频监控的配套产品有更加丰富和成熟.与此 ...
- jQuery在线选座订座(高铁版)
除了电影院在线选座,我们还会接触到飞机机舱选座,当然也有汽车票火车票选座的.假如有一天买火车票也提供在线选座,那么今天我来给大家介绍下如何使用jQuery选座插件完成高铁列车座位布置.选座.不同等级座 ...
- 洛谷月赛 P3406 海底高铁
P3406 海底高铁 题目提供者kkksc03 标签 云端评测 难度 普及/提高- 题目背景 大东亚海底隧道连接着厦门.新北.博艾.那霸.鹿儿岛等城市,横穿东海,耗资1000亿博艾元,历时15年,于公 ...
- Linux高并发网络编程开发——10-Linux系统编程-第10天(网络编程基础-socket)
在学习Linux高并发网络编程开发总结了笔记,并分享出来.有问题请及时联系博主:Alliswell_WP,转载请注明出处. 10-Linux系统编程-第10天(网络编程基础-socket) 在学习Li ...
- HMS Core Keyring携手航班管家和高铁管家,打造美好出行体验
高铁管家是国内最早⽀持⼿机⽀付购买⽕⻋票App之⼀,日活用户超380万,为⽤户提供一站式铁路出⾏服务.高铁管家母公司--深圳市活⼒天汇科技股份有限公司是国内智能⼤出⾏的开创者,先后推出航班管家.⾼铁管 ...
- 高并发网络编程之epoll详解
select.poll和epoll的区别 在linux没有实现epoll事件驱动机制之前,我们一般选择用select或者poll等IO多路复用的方法来实现并发服务程序.在大数据.高并发.集群等一些名词 ...
随机推荐
- 4.1 python中调用rust程序
概述 使用rust-cpython将rust程序做为python模块调用: 通常为了提高python的性能: 参考 https://github.com/dgrunwald/rust-cpython ...
- How does “void *” differ in C and C++?
C allows a void* pointer to be assigned to any pointer type without a cast, whereas C++ does not; th ...
- 【Linux】【Basis】【网络】网络相关的内核参数
Linux系统内核设置优化tcp网络,# vi /etc/sysctl.conf,添加以下内容 net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies.当出现SYN等待 ...
- ssm-book 整合案例
一:环境及要求 环境: IDEA最新版 MySQL 5.7.19 Tomcat 9 Maven 3.6 要求: 需要掌握 MyBatis:Spring:SpringMVC:MySQL数据库 ...
- LVS nat模型+dr模型
nat模型 在 rs1 和 rs2 安装httpd 并配置测试页,启动 [root@rs1 ~]# yum install httpd -y[root@rs1 ~]# echo "thi ...
- jquery:iframe里面的元素怎样触发父窗口元素的事件?
例如父窗口定义了一个事件. top: $(dom1).bind('topEvent', function(){}); 那么iframe里面的元素怎样触发父窗口dom1的事件呢?这样吗? $(dom1, ...
- 通过 Ajax 发送 PUT、DELETE 请求的两种实现方式
一.普通请求方法发送 PUT 请求 1. 如果不用 ajax 发送 PUT,我们可以通过设置一个隐藏域设置 _method 的值,如下: <form action="/emps&quo ...
- JDBCUtils工具类的属性
package cn.itcast.util;import java.io.FileReader;import java.io.IOException;import java.net.URL;impo ...
- html上传图片的预览功能实现
表单代码(仅取上传文件部分): <input class="selectImg" style="position:absolute;opacity: 0;width ...
- 『学了就忘』Linux服务管理 — 75、Linux系统中的服务
目录 1.服务的介绍 2.Windows系统中的服务 3.Linux系统中服务的分类 4.独立的服务和基于xinetd服务的区别 5.如何查看一个服务是独立的服务还是基于xinetd的服务 (1)查看 ...