我们有一个计算机网络和一个双向连接列表。这些连接中的每一个都允许将文件从一台计算机传输到另一台计算机。是否可以将文件从网络上的任何计算机发送到任何其他计算机?

输入规格:

每个输入文件包含一个测试用例。对于每个测试用例,第一行包含N (2≤N≤104),网络中的计算机总数。网络中的每台计算机都由一个介于 1 到N. 然后在以下几行中,输入的格式如下:

I c1 c2  

whereI代表在c1和之间输入连接c2;要么

C c1 c2

whereC代表检查是否可以在c1和之间传输文件c2;要么

S

whereS代表停止这种情况。

输出规格:

对于每种C情况,如果可能或不可能分别在c1和之间传输文件,请在一行中打印“是”或“否”一词c2。在每个案例的末尾,在一行中打印“网络已连接”。如果任何一对计算机之间存在路径;或“有k组件”。其中k是该网络中连接组件的数量。

样本输入 1:

<span style="color:#212529"><code class="language-in">5
C 3 2
I 3 2
C 1 5
I 4 5
I 2 4
C 3 5
S
</code></span>

示例输出 1:

<span style="color:#212529"><code class="language-out">no
no
yes
There are 2 components.
</code></span>

样本输入 2:

<span style="color:#212529"><code class="language-in">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
</code></span>

示例输出 2:

<span style="color:#212529"><span style="background-color:var(--bg-base)"><code class="language-out">no
no
yes
yes
The network is connected.</code></span></span>

AC代码:(结合注释更好理解)

#include<bits/stdc++.h>
using namespace std;
int n;
int a[10000+10]={0};
int find(int i){//找到根是序号几 if(a[i]<0){return i;}else {return find(a[i]);}
}
//这个connect运用了路径压缩
void connect(int r1,int r2){//注意a[r1],a[r2]都是负数,他们是根的根  if(a[r2]<=a[r1]){//看看哪个根儿子多 a[r2]+=a[r1];//用儿子多的根来记录 if(a[r1]!=-1){//如果另一个根有儿子,需要让儿子都改姓 for(int i=1;i<n+1;i++){if(a[i]==r1){a[i]=r2;}}}a[r1]=r2;//他自己也要改姓 }else{//同理 a[r1]+=a[r2];if(a[r2]!=-1){for(int i=1;i<n+1;i++){if(a[i]==r2){a[i]=r1;}}}a[r2]=r1;}
}
//此connect未用路径压缩
//void connect(int Root1,int Root2){
//  if(a[Root2]<a[Root1]){
//      a[Root1] = Root2;
//  }else{
//      if(a[Root2]==a[Root1]){
//          a[Root1]--;
//      }
//      a[Root2] = Root1;
//  }
//}
//      for(int i=1;i<n+1;i++){
//          if(a[i]==)
//      }
//  }
//}
int main(){//int n;cin>>n;for(int i=0;i<n+1;i++){a[i]=-1;}char ch;cin>>ch;while(ch!='S'){if(ch=='C'){int n1,n2;cin>>n1;cin>>n2;int root1=find(n1);int root2=find(n2);if(root1!=-1){if(root1==root2){cout<<"yes"<<endl;}else{cout<<"no"<<endl;}}else{cout<<"no"<<endl;}}else{int n1,n2;cin>>n1;cin>>n2;int r1=find(n1);int r2=find(n2);if(r1!=r2)connect(r1,r2);}cin>>ch;}int e=0;for(int i=1;i<n+1;i++){if(a[i]<0){e++;}} if(e>1)cout<<"There are "<<abs(e)<<" components."<<endl;else{cout<<"The network is connected."<<endl;}
}

7-17 文件传输(路径压缩解法)相关推荐

  1. scp 命令 路径_基于SSH的文件传输:scp命令

    日常开发中,经常需要在服务器和本地之间进行文件传输.这里来介绍一种基于SSH的文件传输方法--scp命令 命令格式 scp(secure copy,remote file copy program), ...

  2. linux——不同系统间的文件传输和打包压缩

    一.文件归档 1.文件归档,就是把多个文件变成一个归档文件 2.tar 参数 c ##创建 f ##指定归档文件名称 t ##显示归档文件中的内容 r ##向归档文件中添加文件 --get ##取出单 ...

  3. DCMTK:使用RLE传输语法压缩DICOM文件

    DCMTK:使用RLE传输语法压缩DICOM文件 使用RLE传输语法压缩DICOM文件 使用RLE传输语法压缩DICOM文件 #include "dcmtk/config/osconfig. ...

  4. DCMTK:使用JPEG-LS传输语法压缩DICOM文件

    DCMTK:使用JPEG-LS传输语法压缩DICOM文件 使用JPEG-LS传输语法压缩DICOM文件 使用JPEG-LS传输语法压缩DICOM文件 #include "dcmtk/conf ...

  5. c# 指定打开某个路径下的CMD_Windows小技巧 批处理文件实现目录下文件批量打包压缩...

    最近整理资料,发现很多 pdf 文档,占用了不少的存储空间,考虑使用 7-zip 进行压缩存储,由于文件比较多,且分散在不同目录下,一个个文件压缩比较繁琐.为了提高效率且,方便后面取用,所有打算捣鼓个 ...

  6. 抓取特定路径下文件 可批量压缩成压缩包 并分享到微信

    创建文件类 public class GrabDataActivity extends FragmentActivity {private Context context; private TextV ...

  7. tar 命令打包压缩tar.gz,不包含当前文件夹路径

    tar 命令打包压缩 最近研究一些DevOps自动化部署相关的操作,其中Linux命令是避免不了的,其他我用到的命令都很简单,就打包压缩着立跟大家分享一下.前端的代码经过npm run build指令 ...

  8. MT7688学习笔记(17)——OpenWRT与电脑之间SCP文件传输

    一.简介 SCP(Security Copy) 协议是 SSH 协议的一个子系统,用于实现通过 SSH 协议的文件传输, OpenWRT 默认开启 SCP 服务器.另外还有一种 SFTP 协议,SFT ...

  9. 详解“FTP文件传输服务”安装配置实例

    "FTP文件传输服务"安装配置实例 家住海边喜欢浪:zhang789.blog.51cto.com 目录 简介 ftp工作原理 常见的FTP服务 Vsftpd服务器的安装 Vsft ...

最新文章

  1. Linux2.6内核--内存管理(2)--区
  2. Celery - 一个懂得 异步任务 , 定时任务 , 周期任务 的芹菜
  3. APP元素定位操作API
  4. superset可视化-桑基图(sankey diagram)
  5. C++之父:比特币是用C++开发的,我为此感到遗憾。
  6. Linux系统的启动引导过程(转)
  7. ORM中的事务和锁、Ajax异步请求和局部刷新、Ajax文件上传、日期时间类型的Json、多表查询图书系统
  8. 懂分析、会预测,你见过这样的华为云DAS吗?
  9. BestCoder Round #77 (div.2)解题报告
  10. spring2.X(1)--新特性介绍
  11. 用代码理解ObjC中的发送消息和消息转发
  12. 委托的定义,与简单使用
  13. d3js精通教程_d3js从基础到精通第二部分
  14. 哪些植物最吸毒?这份植物“吸毒”手册千万要收好!
  15. 【干货】如何紧跟未来的设计趋势:15 个让你永远不过时的资源
  16. Uncaught SyntaxError The requested module ‘node_modules.vitevue.jsv=bd1817bb‘ does not provide
  17. 用直接插入法进行数组排序
  18. 德佑地产房产经纪人区域总监访谈:精耕,业精于勤
  19. 2017校招信息每日汇总(更新至8.4)
  20. 牛人用计算机弹歌曲乐谱,牛人乐谱app

热门文章

  1. 如何移动 nuget 缓存文件夹
  2. 百度推广账户大量被盗 众多企业SAY GOOD BYE
  3. html span溢出隐藏,css实现溢出隐藏的方法
  4. KNN算法预测iris数据集
  5. WindowsAPI —— CreateMutex
  6. 【修真院web小课堂】对一个数组 FILTER、SOME、MAP、FOREACH的操作分别有什么作用?
  7. 学二胡到底有没有用?感觉坚持不下去了该怎么办?
  8. 【数字信号调制】基于matlab GUI PCM编码和QAM调制系统【含Matlab源码 2080期】
  9. Duet Display连不上Windows解决办法
  10. 初中计算机课的学情分析,初中信息技术说课稿《信息与信息技术》