Description
关系R具有对称性和传递性。数对p q表示pRq,p和q是0或自然数,p不等于q。
要求写一个程序将数对序列进行过滤,如果一个数对可以通过前面数对的传递性得到,则将其滤去。例如:
输入    输出  连通性
3 4   3 4   
4 9   4 9
8 0   8 0
2 3   2 3
5 6   5 6
2 9     2-3-4-9
5 9   5 9
7 3   7 3
4 8   4 8
5 6   5-6
0 2     0-8-4-3-2
6 1   6 1

其中数对2 9和0 2可由之前数对的连通关系得到,故不做输出。

Input

输入共有m行(0<=m<=1000000),每行一个数对,数对的数字之间以1个空格分隔;数对的数字为0或n=100000以内的自然数。

Output

输出包含过滤之后的数对序列。每行输出一个数对,数对的数字之间以1个空格分隔。

Sample Input
 Copy sample input to clipboard
3 4
4 9
8 0
2 3
5 6
2 9
5 9
7 3
4 8
5 6
0 2
6 1
Sample Output
3 4
4 9
8 0
2 3
5 6
5 9
7 3
4 8
6 1
//在本题中要删去所有具有连通性的结点,而具有连通性的结点的性质是
//在图中具有相同的祖先,则我们只要通过判断两个结点是否存在相同的祖先
//即可判断是否需要删去,最直接的做法是每插入一对结点,DFS或BFS,判断是否搜索到相同的点
//但这样做法时间复杂度太大,在一开始时就让每个结点指向自己的祖先结点
#include<iostream>
using namespace std; const int MAX = 1000005;
int father[MAX]; int find(int num) {return ( num==father[num] ? num : (father[num]=find(father[num])) );} int main()
{
int m;
for(int i=0;i<MAX;i++)
father[i]=i; int point1, point2; while(cin>>point1>>point2)
{
if(find(point1)!=find(point2))
{
cout<<point1<<" "<<point2<<endl;
father[find(point1)]=father[find(point2)];
}
} return 0;
}

  

[SOJ]连通性问题的更多相关文章

  1. OVS local network 连通性分析 - 每天5分钟玩转 OpenStack(132)

    前面已经创建了两个 OVS local network,今天详细分析它们之间的连通性. launch 新的 instance "cirros-vm3",网络选择 second_lo ...

  2. 算法练习_图的连通性问题(JAVA)

    一.问题 1.问题描述: 有n个点(1...n),输入整数对(8,9),表示8,9点之间存在相互的连接关系. 动态连通性问题--编写一段程序过滤掉所以无意义的整数对,即为在不破坏图连通性的前提下,以最 ...

  3. Kosaraju 算法检测有向图的强连通性

    给定一个有向图 G = (V, E) ,对于任意一对顶点 u 和 v,有 u --> v 和 v --> u,亦即,顶点 u 和 v 是互相可达的,则说明该图 G 是强连通的(Strong ...

  4. 【贪心】SOJ 13983

    SOJ 13983. Milk Scheduling 这是比赛题,还是作死的我最讨厌的英文题,题目大意就是有n头奶牛,要在喂奶截止时间前给他喂奶并得到相应的含量的牛奶. 一开始的想法就是挑选截止日期的 ...

  5. hihoCoder 1185 连通性·三(Tarjan缩点+暴力DFS)

    #1185 : 连通性·三 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 暑假到了!!小Hi和小Ho为了体验生活,来到了住在大草原的约翰家.今天一大早,约翰因为有事要出 ...

  6. hihoCoder 1183 连通性一·割边与割点(Tarjan求割点与割边)

    #1183 : 连通性一·割边与割点 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 还记得上次小Hi和小Ho学校被黑客攻击的事情么,那一次攻击最后造成了学校网络数据的丢 ...

  7. hihoCoder 1184 连通性二·边的双连通分量

    #1184 : 连通性二·边的双连通分量 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在基本的网络搭建完成后,学校为了方便管理还需要对所有的服务器进行编组,网络所的老 ...

  8. 数据结构-图-Java实现:有向图 图存储(邻接矩阵),最小生成树,广度深度遍历,图的连通性,最短路径1

    import java.util.ArrayList; import java.util.List; // 模块E public class AdjMatrixGraph<E> { pro ...

  9. Windows批处理:自动检查服务器连通性

    该技术与上一篇<自动检查网络连通性>的实现原理相同,我将脚本稍微改动了下,用于检查公司服务器的连通性,简单快捷.在这里附上修改方法. @echo off color 1F title 服务 ...

随机推荐

  1. Orchard网上商店模块

    从头开始编写一个Orchard网上商店模块(1) - 介绍 原文地址:http://skywalkersoftwaredevelopment.net/blog/writing-an-orchard-w ...

  2. MVC几种传值方式

    一,Model public class Course { public int Id { get; set; } public string Name { get; set; } } public ...

  3. IOS开发之路三(XML解析之GDataXML的使用)

    最近再做一个项目需要用到xml的解析.今天查了一些资料自己做了一个小demo.纯OC没有界面.. 在IOS平台上进行XML文档的解析有很多种方法,在SDK里面有自带的解析方法,但是大多情况下都倾向于用 ...

  4. 搜狗主页页面CSS学习小记

    1.边框的处理   要形成上图所示的布局效果,即,点选后,导航下面的边框不显示而其他的边框形成平滑的形状.相对于把导航的下面边框取消然后用空白覆盖掉下面搜索栏的边框比较而言,sougou有很好的方法来 ...

  5. JS左侧菜单-02

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"> <html xmlns=" ...

  6. Web缓存解决方案

    缓存是构建于HTTP统一接口之上的最有用功能之一.可以利用缓存减少终端用户感知到的延时,增加可靠性,减少带宽使用和成本,降低服务器负载.缓存无处不在,可以在服务器网络里,内容分发网络(Content ...

  7. CentOS常用到的查看系统命令

    CentOS常用到的查看系统命令   # uname -a    # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue   # 查看操作系统版本 # cat /proc/c ...

  8. C++输入一个字符串,把其中的字符按照逆序输出的两种方法

    用字符数组方法: 基本思路是,先判断字符的结束标志'\0',然后从该位置向前输出. 实现代码: #include<iostream> using namespace std; int ma ...

  9. PYTHON黑帽编程 4.1 SNIFFER(嗅探器)之数据捕获(下)

    上一节(<4.1 SNIFFER(嗅探器)之数据捕获(上)>)中, 我们讲解了通过Raw Socket的方式来编写Sniffer的基本方法. 本节我们继续来编写Sniffer,只不过使用现 ...

  10. mysql建立、删除索引及使用

    同步发布:http://www.yuanrengu.com/index.php/2017-01-13.html 一.索引的作用 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少 ...