并查集
#include <stdio.h>
int f[10000];
int find(int n)
{
    if (f[n]!=n) f[n]=find(f[n]);
    return f[n];
}
int main()
{
    int i,b,a,t,n,m;
    while (~scanf("%d%d%d",&m,&n,&t))
    {
        for (i=1;i<=m;i++)
            f[i]=i;
        for (i=1;i<=n;i++)
        {
            scanf("%d%d",&a,&b);
            a=find(a);
            b=find(b);
            f[a]=b;
        }
        for (i=1;i<=t;i++)
        {
            scanf("%d%d",&a,&b);
            a=find(a);
            b=find(b);
            if (a==b)
                printf("YES\n");
            else 
                printf("NO\n");
        }
    }
    return 0;
}
posted on 2013-04-18 19:14  Modiz  阅读(109)  评论(0编辑  收藏  举报