当两台计算机双向连通的时候,文件是可以在两台机器间传输的。给定一套计算机网络,请你判断任意两台指定的计算机之间能否传输文件?

输入格式:
首先在第一行给出网络中计算机的总数 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))相关推荐

  1. 【解析】案例4-1.7 文件传输 (25 分)

    立志用最少的代码做最高效的表达 当两台计算机双向连通的时候,文件是可以在两台机器间传输的.给定一套计算机网络,请你判断任意两台指定的计算机之间能否传输文件? 输入格式: 首先在第一行给出网络中计算机的 ...

  2. Ubuntu 12.04 LTS 下安装文件传输远程桌面共享软件Teamviewer

    TeamViewer是一个能在任何防火墙和NAT代理的后台用于远程控制,桌面共享和文件传输的简单且快速的解决方案.为了连接到另一台计算机,只需要在两台计算机上同时运行TeamViewer即可,而不需要 ...

  3. 循序渐进Java Socket网络编程(多客户端、信息共享、文件传输)

    目录[-] 一.TCP/IP协议 二.TCP与UDP 三.Socket是什么 四.Java中的Socket 五.基本的Client/Server程序 六.多客户端连接服务器 七.信息共享 八.文件传输 ...

  4. 54款开源服务器软件(内容管理、数据库、电子商务、邮件服务器、文件传输、操作系统、安全、小公司服务 .

    本文逐一介绍了内容管理.数据库.电子商务.邮件服务器.文件传输.操作系统.安全.小公司服务器.服务器日志文件监控和分析.存储.虚拟化.Web服务器.维基/协作及其他方面的开源服务器软件. 据斯坦福大学 ...

  5. 网络协议从入门到底层原理(10)WebSocket、WebService、RESTful、HTTPDNS、FTP文件传输协议、邮件相关协议、IPv6

    其他协议 WebSocket WebSocket - 建立连接 WebService RESTful HTTPDNS FTP文件传输协议 邮件相关的协议(SMTP.POP.IMAP) POP vs I ...

  6. 【计算机网络】第六部分 应用层(26) 远程登录、电子邮件与文件传输

    文章目录 26.1 远程登录 26.1.1 `TELNET` 1. 分时环境 2. 登录 3. 网络虚拟终端 4. 嵌入 5. 选项 6. 操作方式 26.1.2 Rlogin和SSH 26.2 电子 ...

  7. ftp linux 推送文件_Linux文件传输FTP详解

    ftp命令用来设置文件系统相关功能.ftp服务器在网上较为常见,Linux ftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文件,这里详细介绍Linux ftp命令的一些经常使用的命令,相 ...

  8. java p2p 下载_java p2p文件传输(含服务器端与jsp源码)

    [实例简介] [实例截图] [核心代码] import java.net.*; import java.util.List; import java.awt.*; import javax.swing ...

  9. shell脚本一步完成多层ssh跳转时的文件传输:Multi-layer scp

    本文发布于个人公众号:WriteSimpleDemo 专注shell,欢迎关注 前言 写这个工具主要是为了解决一个困惑了我四年的难题,即:多层ssh跳转时的文件传输. 由于工作中,经常需要ssh连接到 ...

  10. linux下测试ftp传输,linux下ftp命令使用详解---linux文件传输ftp命令

    linux下ftp命令使用详解---linux文件传输ftp命令 上一篇 / 下一篇  2010-12-18 09:15:35 / 个人分类:Linux ftp(file transfer proto ...

最新文章

  1. The Report(连接查询)
  2. jQuery图片轮播
  3. maven 亲测可用国内镜像 阿里云
  4. Mysql:一条sql是如何执行的?
  5. 娱美德投入千万研发 揭秘韩国第一游戏引擎
  6. ML in Action 决策树
  7. spring mvc 返回json数据的四种方式
  8. java传参数的方法_java中方法的参数传递机制
  9. 谈谈Groovy闭包
  10. 腾讯牵手数十家合作伙伴发起“光合计划” 推动“百千万”三大目标落地
  11. python二维列表长度_python如何使二维数组的高度大于长度
  12. 央视《家有妙招》整理版,共250招,值得永远收藏
  13. ESP32 EC11 制作电脑音量调节旋钮
  14. Python实现身份证号码合法性校验
  15. 直角四面体面积公式推导
  16. c语言小兔子原来有1个萝卜,体能《小兔子运萝卜》.doc
  17. 【成功解决】运行qt生成的.exe文件报“无法找到入口”的问题
  18. wps-excel的自动分页符(虚线)怎么去掉
  19. php或js获取word内容,js能读取word js读取word文档
  20. 如何手动下载并安装 Visual Studio Code 的 SAP Fiori tools - Extension Pack 扩展

热门文章

  1. TCP/IP的全部IP协议号
  2. 手推RNN BPTT(back propagation through time)反向传播
  3. 2.4~5 x86计算机的组成
  4. zookeeper分布式原理实战解析
  5. Android自定义ProgressBar样式:渐变圆角水平进度条
  6. 009 HDFS的shell命令(里面有一个安全模式)
  7. hibernate的flush()、refresh()、clear()针对一级缓存的操作的区别
  8. GitHub 添加 SSH keys
  9. linux文件管理命令详解
  10. CentOs6.5安装使用数据恢复软件extundelete