zoukankan      html  css  js  c++  java
  • C

    某个人举办生日宴会邀请了很多人来参加,不过呢,这些人有个毛病他们只会与熟悉人的坐在一起,当然他们也信奉朋友的朋友也是朋友这一法则,所以问最少需要多少张桌子......

    好吧我承认这才是裸并查集.......没什么好说的,直接秒了吧

    /////////////////////////////////////////////////////////////////////
    #include<stdio.h>

    const int maxn  = 1005;

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

    int main()
    {
        int T;

        scanf("%d", &T);

        while(T--)
        {
            int i, N, M, u, v;

            scanf("%d%d", &N, &M);

            for(i=1; i<=N; i++)
                f[i] = i;

            while(M--)
            {
                scanf("%d%d", &u, &v);
                u = Find(u);
                v = Find(v);

                f[u] = v;
            }

            int ans = 0;

            for(i=1; i<=N; i++)
            {
                if(f[i] == i)
                    ans++;
            }

            printf("%d ", ans);
        }

        return 0;
    }
  • 相关阅读:
    DS博客作业06--图
    DS博客作业05--树
    DS博客作业03--栈和队列
    DS博客作业02--线性表
    DS博客作业01--日期抽象数据类型设计与实现
    C语言博客作业06--结构体&文件
    c语言博客作业05--指针
    C语言博客作业03--函数
    DS博客作业--课程总结
    DS博客作业07--查找
  • 原文地址:https://www.cnblogs.com/liuxin13/p/4667627.html
Copyright © 2011-2022 走看看