哈理工 oj 2189 节点的连接

节点的连接
Time Limit: 1000 MS Memory Limit: 32768 K
Total Submit: 67(36 users) Total Accepted: 36(34 users) Rating: Special Judge: No
Description

有N个节点,一开始任意两个节点都没有相连,之后有两种操作:

1: 将 A 节点和 B 节点连接起来。

2: 问从A节点出发可以直接或间接到达的节点数量。

如果 A 节点和 B 节点被连接起来了,那么从A可以到达B,同时从B也可以到达A。

Input

第一行是一个整数T,表示有T组测试数据。

对于每组测试数据,第一行是一个整数 n (n<=1000) 代表节点数,一个整数 m (m<=1000)代表操作数,之后有m行,每行代表一种操作。

第一种操作是:  0 A B  (1<=A,B<=n),表示将A,B节点连接起来;

第二种操作是:  1 A    (1<=A<=n),表示询问从A节点出发可以直接或间接到达的节点的数量。

Output

对于每组测试数据,如果是第二种操作,输出一个整数表示答案,每组输出占一行。

Sample Input

1

4 5

0 1

1 1 2

0 1

1 1 3

0 3

Sample Output

1

2

3

Source

2014.11.30新生赛-正式赛

很巧碰到个刚学完的算法题目,立马给他a了 草!

#include<iostream>
#include<string.h>
using namespace std;
const int M=50001;
int F[M];

int Find(int x)
{
    if(x!=F[x])
        return F[x]=Find(F[x]);
}

void union_set(int x,int y)
{
    int tx=Find(x);
    int ty=Find(y);
    if(tx!=ty)
        F[tx]=ty;
}

int main()
{
    int n,m;
    int T;
    cin>>T;
    while(T--)
    {
        cin>>n>>m;
        int a,b,c;
        for(int k=0;k<=n;k++)
            F[k]=k;
        for(int i=0;i<m;i++)
        {
            cin>>a;
            if(a==1)
            {
                cin>>b>>c;
                union_set(b,c);
            }
            if(a==0)
            {
                cin>>b;
                int f0=Find(b);
                int count=0;
                for(int m=1;m<=n;m++)
                {
                    if(f0==Find(m))
                        count++;
                }
                cout<<count<<endl;
            }
         }

      }
    return 0;
}
时间: 2024-10-13 21:51:15

哈理工 oj 2189 节点的连接的相关文章

二叉树的建立与遍历(山东理工OJ)

数据结构实验之二叉树的建立与遍历 题目描述 已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点).请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度. 输入 输入一个长度小于50个字符的字符串. 输出 输出共有4行: 第1行输出中序遍历序列: 第2行输出后序遍历序列: 第3行输出叶子节点个数: 第4行输出二叉树深度. 示例输入 abc,,de,g,,f,,, 示例输出 cbegdfa cgefdba 3 5 #include <iost

打印机故障转移集群之三:打印机节点服务器连接

节点服务器连接iSCSI磁盘: 下面我们需要让节点服务器(PRT01\PRT02)连接到所创建的三块iSCSI磁盘,节点1上和节点2分别执行下列的步骤将iSCSI的3块共享盘分别挂接到群集节点上,在节点1上进行格式化, 节点2上直接使用即可. 节点上需要使用iSCSI程序连接到目标服务器,如下图所示: 点击管理工具中的iSCSI发起程序,第一次使用会出现下面的提示,必须启动 iSCSI服务. 点击:是,出现下图所示的界面. 点击"发现"选项卡,再点击"发现门户",输

Error 522 百度云加速节点无法连接源站 解决方案

百度云加速节点无法连接源站 处理步骤如下: 1.登录绑定源代码服务器,在服务上直接访问网址.(保证百度云和服务链接正常)(多访问几次保证服务端可以访问.) 2.本地客户端链接网址测试,测试是否正常,如果不正常,走下一步. 3.如果链接不上网址,表面本地无法解析百度云,更换dns,将备用dns设置为8.8.8.8. 4.更换后尝试刷新,清除浏览器缓存,估计基本没有问题,可以直接浏览了. 问题分析:两种原因:一.服务器和百度云无法链接,二.本地dns无法解析指定ip.

哈理工 oj 2122 旅行(map + 最短路dij算法)

旅行 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 18(6 users) Total Accepted: 3(3 users) Rating: Special Judge: No Description "04.24,和Sakura去东京天空树,世界上最暖和的地方天空树的顶上. " "04.26.和Sakura去明治神宫.有人在那里举办婚礼." "04.25.和Sakura去迪士尼.鬼屋非

众数问题(山东理工OJ)

题目描写叙述 给定含有n个元素的多重集合S,每一个元素在S中出现的次数称为该元素的重数.多重集S中重数最大的元素称为众数. 比如,S={1,2,2,2,3.5}.多重集S的众数是2,其重数为3. 对于给定的由n 个自然数组成的多重集S.计算S的众数及其重数. 输入 输入数据的第1行是多重集S中元素个数n(n<1300000):接下来的n行中,每行有一个最多含有5位数字的自然数,. 输出 输出数据的第1行给出众数,第2行是重数. 演示样例输入 6 1 2 2 2 3 5 演示样例输出 2 3 #i

哈理工 oj——队列列列列!!!!!

队列列列列!!!!! Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 337(148 users) Total Accepted: 154(142 users) Rating: Special Judge: No Description xuxu完成了栈的实验要求后,他又很是开心,刚要出去liuda, biaobiao突然问道老师让做的队列的那个实验你写完了么,xuxu顿时大呼悲哉....他给忘记了,怎么办..明天就要上交实验报告了

哈理工oj 1348 最短路径 (floyd算法)

<p>最短路径 </p><p>Time Limit: 1000 MS Memory Limit: 32767 K </p><p>Total Submit: 208(28 users) Total Accepted: 31(20 users) Rating:  Special Judge: No   Description 给出一个有向带权图G,针对该图有如下的两种操作: (1)标记该图的一个点 (2)找到两点间的只通过已标记点的最短路径长度<

哈理工 oj 1161 Leyni

Leyni Time Limit: 3000 MS Memory Limit: 65536 K Total Submit: 466(94 users) Total Accepted: 142(88 users) Rating: Special Judge: No Description Leyni被人掳走,身在水深火热之中... 小奈叶为了拯救Leyni,独自一人前往森林深处从静竹手中夺回昏迷中的Leyni. 历经千辛万苦,小奈叶救出了Leyni,但是静竹为此极为恼怒,决定对他们发起最强烈的进攻

哈理工OJ P2320:OX

题目链接:OX 题意 :给出一个3X3的黑白棋棋盘,棋盘上有若干黑白子,再给出下一个下的人,问下一个下的人能否赢 分析:考虑到只有39种状态,故用一个数保存目前棋盘的状态,记为value,再枚举空位DFS,每次 DFS先判该状态是否已到达(剪枝),再拆分状态用c[3][3]储存,判断是否有赢的状态,最后遍历 棋盘寻找空位,若有则下,value储存状态,再DFS下去,注意返回c[i][j]清零 判断胜负平的条件如下: 若有一个状态可以到达必败点,则该点必胜,返回1 若有一个状态可以到达平局点,则该