7-12 文件传输 (25 point(s))
当两台计算机双向连通的时候,文件是可以在两台机器间传输的。给定一套计算机网络,请你判断任意两台指定的计算机之间能否传输文件?
输入格式:
首先在第一行给出网络中计算机的总数 N (2≤N≤104),于是我们假设这些计算机从 1 到 N 编号。随后每行输入按以下格式给出:
I c1 c2
其中I表示在计算机c1和c2之间加入连线,使它们连通;或者是
C c1 c2
其中C表示查询计算机c1和c2之间能否传输文件;又或者是
S
这里S表示输入终止。
输出格式:
对每个C开头的查询,如果c1和c2之间可以传输文件,就在一行中输出"yes",否则输出"no"。当读到终止符时,在一行中输出"The network is connected.“如果网络中所有计算机之间都能传输文件;或者输出"There are k components.”,其中k是网络中连通集的个数。
输入样例 1:
5
C 3 2
I 3 2
C 1 5
I 4 5
I 2 4
C 3 5
S
输出样例 1:
no
no
yes
There are 2 components.
输入样例 2:
5
C 3 2
I 3 2
C 1 5
I 4 5
I 2 4
C 3 5
I 1 3
C 1 5
S
输出样例 2:
no
no
yes
yes
The network is connected.
思路: 直接使用并查集即可。
#include<iostream>
#include<algorithm>
#include<map>using namespace std;
const int MAXN = 10005;int farther[MAXN];
void Union(int a, int b);
int find(int x);int main(){int n;cin >> n;for(int i = 1; i <= n; i++){farther[i] = i;}while(true){char c;cin >> c;//outif(c == 'S')break;int a,b;cin >> a >> b;if(c == 'I'){Union(a,b);continue;}if(c =='C'){int fa = find(a);int fb = find(b);if(fa != fb){cout << "no" << endl;}else{cout << "yes" << endl;}}}map<int,int> m;for(int i = 1; i <= n; i++){int f = find(i);m[f]++;}if(m.size() == 1){cout << "The network is connected." << endl;}else {printf("There are %d components.\n",m.size());} return 0;
}void Union(int a, int b){int fa = find(a);int fb = find(b);if(fa != fb){farther[fa] = fb;}
}//不压缩路径这题会超时
/*
int find(int x){if(x == farther[x]){return x;}else{return find(farther[x]);}
}
*/int find(int x){int a = x;while(x != farther[x]){x = farther[x];}while(a != farther[a]){int z = a;a = farther[a];farther[z] = x;}return x;
}
7-12 文件传输 (25 point(s))相关推荐
- 【解析】案例4-1.7 文件传输 (25 分)
立志用最少的代码做最高效的表达 当两台计算机双向连通的时候,文件是可以在两台机器间传输的.给定一套计算机网络,请你判断任意两台指定的计算机之间能否传输文件? 输入格式: 首先在第一行给出网络中计算机的 ...
- Ubuntu 12.04 LTS 下安装文件传输远程桌面共享软件Teamviewer
TeamViewer是一个能在任何防火墙和NAT代理的后台用于远程控制,桌面共享和文件传输的简单且快速的解决方案.为了连接到另一台计算机,只需要在两台计算机上同时运行TeamViewer即可,而不需要 ...
- 循序渐进Java Socket网络编程(多客户端、信息共享、文件传输)
目录[-] 一.TCP/IP协议 二.TCP与UDP 三.Socket是什么 四.Java中的Socket 五.基本的Client/Server程序 六.多客户端连接服务器 七.信息共享 八.文件传输 ...
- 54款开源服务器软件(内容管理、数据库、电子商务、邮件服务器、文件传输、操作系统、安全、小公司服务 .
本文逐一介绍了内容管理.数据库.电子商务.邮件服务器.文件传输.操作系统.安全.小公司服务器.服务器日志文件监控和分析.存储.虚拟化.Web服务器.维基/协作及其他方面的开源服务器软件. 据斯坦福大学 ...
- 网络协议从入门到底层原理(10)WebSocket、WebService、RESTful、HTTPDNS、FTP文件传输协议、邮件相关协议、IPv6
其他协议 WebSocket WebSocket - 建立连接 WebService RESTful HTTPDNS FTP文件传输协议 邮件相关的协议(SMTP.POP.IMAP) POP vs I ...
- 【计算机网络】第六部分 应用层(26) 远程登录、电子邮件与文件传输
文章目录 26.1 远程登录 26.1.1 `TELNET` 1. 分时环境 2. 登录 3. 网络虚拟终端 4. 嵌入 5. 选项 6. 操作方式 26.1.2 Rlogin和SSH 26.2 电子 ...
- ftp linux 推送文件_Linux文件传输FTP详解
ftp命令用来设置文件系统相关功能.ftp服务器在网上较为常见,Linux ftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文件,这里详细介绍Linux ftp命令的一些经常使用的命令,相 ...
- java p2p 下载_java p2p文件传输(含服务器端与jsp源码)
[实例简介] [实例截图] [核心代码] import java.net.*; import java.util.List; import java.awt.*; import javax.swing ...
- shell脚本一步完成多层ssh跳转时的文件传输:Multi-layer scp
本文发布于个人公众号:WriteSimpleDemo 专注shell,欢迎关注 前言 写这个工具主要是为了解决一个困惑了我四年的难题,即:多层ssh跳转时的文件传输. 由于工作中,经常需要ssh连接到 ...
- linux下测试ftp传输,linux下ftp命令使用详解---linux文件传输ftp命令
linux下ftp命令使用详解---linux文件传输ftp命令 上一篇 / 下一篇 2010-12-18 09:15:35 / 个人分类:Linux ftp(file transfer proto ...
最新文章
- The Report(连接查询)
- jQuery图片轮播
- maven 亲测可用国内镜像 阿里云
- Mysql:一条sql是如何执行的?
- 娱美德投入千万研发 揭秘韩国第一游戏引擎
- ML in Action 决策树
- spring mvc 返回json数据的四种方式
- java传参数的方法_java中方法的参数传递机制
- 谈谈Groovy闭包
- 腾讯牵手数十家合作伙伴发起“光合计划” 推动“百千万”三大目标落地
- python二维列表长度_python如何使二维数组的高度大于长度
- 央视《家有妙招》整理版,共250招,值得永远收藏
- ESP32 EC11 制作电脑音量调节旋钮
- Python实现身份证号码合法性校验
- 直角四面体面积公式推导
- c语言小兔子原来有1个萝卜,体能《小兔子运萝卜》.doc
- 【成功解决】运行qt生成的.exe文件报“无法找到入口”的问题
- wps-excel的自动分页符(虚线)怎么去掉
- php或js获取word内容,js能读取word js读取word文档
- 如何手动下载并安装 Visual Studio Code 的 SAP Fiori tools - Extension Pack 扩展
热门文章
- TCP/IP的全部IP协议号
- 手推RNN BPTT(back propagation through time)反向传播
- 2.4~5 x86计算机的组成
- zookeeper分布式原理实战解析
- Android自定义ProgressBar样式:渐变圆角水平进度条
- 009 HDFS的shell命令(里面有一个安全模式)
- hibernate的flush()、refresh()、clear()针对一级缓存的操作的区别
- GitHub 添加 SSH keys
- linux文件管理命令详解
- CentOs6.5安装使用数据恢复软件extundelete