zoukankan      html  css  js  c++  java
  • 并查集--(2)

    Time Limit: 1000MS Memory limit: 65536K

    题目描述

    昨天,小明期待已久的英语四六级出成绩了,不幸的是,小明没有及格(::>_<::)。通过和自己的好友聊天,小明知道了很多好友的成绩。于是,无聊的小明自己划分了一些分数段,并统计自己的好友在每个分数段的人数(有些分数段只有一个人),他想知道人数最多的分数段有多少人。
    可是,小明数学不太好,你能帮一下他吗? 假设他有n名好友,好友编号为0~n-1。

    输入

    多组输入,每组第一行是两个整数n,m(2 <= n <= 10000, 0 <= m <=1000)。
    接下来m行,每行两个整数a,b(0 <= a,b <= n-1)。
    代表好友a和好友b在同一个分数段上。

    输出

    输出一行,输出人数最多的分数段有多少人。

    示例输入

    4 2
    1 2
    2 3
    6 3
    0 1
    2 3
    2 4

    示例输出

    3
    3

     

    #include<stdio.h>
    #include<string.h>
    
    int set[10002];
    int  b[10002];
    
     int min(int x, int y)
     {
         return x<y?x:y;
     }
     int max(int x, int y)
     {
         return x>y?x:y;
     }
    
    void merge(int x, int y, int N)
    {
        int i, j, k;
        i = min(x, y);
        j = max(x, y);
    
        for(k=0; k<N; k++)
        {
            if(set[k] == j)
                set[k] = set[i];
        }
        return ;
    }
    int main()
    {
        int  n ,m, x, y, i, q;
        while(scanf("%d", &n)!=EOF)
        {
            memset(set, 0, sizeof(set));
            memset(b, 0, sizeof(b));
            for(i=0; i<n; i++)
            {
                set[i] = i;
            }
            scanf("%d", &m);
            for(i=0; i<m; i++)
            {
                scanf("%d %d", &x, &y);
                merge(x, y, n);
            }
            for(i = 0; i < n; i++)
            {
                b[set[i]]++;
            }
            int q = -1;//  q只要小于0即可
            for(i=0; i<n; i++)
            {
                if(q < b[i])
                {
                    q = b[i];
                }
            }
                printf("%d
    ", q);
        }
        return 0;
    }
    
    

    每天训练发现我比别人做的好慢,但是理解的更深刻,如果一开始学一个新知识点就搜模板,那么这样的人是走不远的,毕业之后带走的只有思维,什么荣誉,奖杯都已经不重要了。
  • 相关阅读:
    天下无贼的IT版经典台词(zz)
    matlab混合编程向导(vc,vb,.net...)
    mcc生成的代码加入VC,VC的一些设置
    请问:Win2k下面,怎样取消mediaplayer的预览?
    win2k密码恢复
    **上海铁路局2004年最新时刻发布!**
    VC与Matlab混合编程的快速实现(31)
    校车时刻表
    悼Java师兄(转载)
    制作弹出窗口常用技巧九则
  • 原文地址:https://www.cnblogs.com/6bing/p/3931269.html
Copyright © 2011-2022 走看看