• ╮(╯▽╰)╭ 数蚂蚁


    ╮(╯▽╰)╭ 数蚂蚁

    TimeLimit: 2000/1000 MS (Java/Others)  MenoryLimit: 65536/32768 K (Java/Others)
    64-bit integer IO format:%I64d
     
    Problem Description
    Lh Boy无聊的时候很喜欢数蚂蚁,而且,还给每一只小蚂蚁编号,通过他长期的观察和记录,发现编号为i的蚂蚁会和编号为j的蚂蚁在一起。 
    现在问题来了,他现在只有他的那本记录本,然而,他想要知道,他所观察的蚂蚁中,有多少堆蚁群。没有记录的编号则作为独自一个一堆。 
    Input
    第一行输入一个整数T,表示有T(1<=T<=25)组测试案例。每一组测试案例,先输入两个整数N和M,分别表示蚂蚁的总数(编号分别为1~N)和记录的条数(1<=N,M<=1000)。紧接着有M行,每一行输入两个数字,a b,表示编号a和编号b的蚂蚁在同一堆里面。在每组测试案例之间都会输入一行空行。 
     
    Output
    对于每组测试案例,在一行中输出答案。 
     
    SampleInput
    2
    5 3
    1 2
    2 3
    4 5
    
    5 1
    2 5
    SampleOutput
    2
    4
    解法:就是基础的并查集。。。
    代码:
     1 #include <iostream>
     2 #include <string.h>
     3 #include <stdio.h>
     4 #include <map>
     5 using namespace std;
     6 int ID[10086];
     7 void Cread(int N)
     8 {
     9     for(int i=0;i<=N;i++)ID[i]=i;
    10 }
    11 int Find(int x)
    12 {
    13     int tmp;
    14     if(ID[x]!=x)tmp=Find(ID[x]);
    15     else tmp=x;
    16     ID[x]=tmp;
    17     return tmp;
    18 }
    19 int main()
    20 {
    21     int N,M,i,j,k,T;
    22     scanf("%d",&T);
    23     while(T--)
    24     {
    25         scanf("%d%d",&N,&M);
    26         Cread(N);
    27         int a,b;
    28         int sign=0;
    29         for(i=0;i<M;i++)
    30         {
    31             scanf("%d%d",&a,&b);
    32             a=Find(a);
    33             b=Find(b);
    34             if(a!=b)
    35             {
    36                 sign++;
    37                 ID[a]=b;
    38             }
    39         }
    40         printf("%d
    ",N-sign);
    41     }
    42     return 0;
    43 }
    View Code
     
    转载请备注:
    **************************************
    * 作者: Wurq
    * 博客: https://www.cnblogs.com/Wurq/
    * Gitee: https://gitee.com/wurq
    **************************************
  • 相关阅读:
    T4 (Text Template Transformation Toolkit)
    GUI Design Studio
    51劳有所获 54务实青年
    [书目20110502]把时间当作朋友
    Rdlc子报表的动态添加
    [转]更新Android SDK到3.0版本时,遇到Failed to rename directory E:\android\tools to E:\android\temp\ToolPackage.old01问题
    JSON
    javascript 特征侦测技术
    IE的setAttribute bug
    将"类数组对象"转换成数组对象
  • 原文地址:https://www.cnblogs.com/Wurq/p/4693322.html
Copyright © 2020-2023  润新知