Cod sursa(job #971467)

Utilizator acomAndrei Comaneci acom Data 9 iulie 2013 13:02:44
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<cstdio>
using namespace std;
int n,m,cod,x,y,GR[100005];
int grupa(int k)
{
    if (GR[k]==k) return k;
    GR[k]=grupa(GR[k]);
    return GR[k];
}
void unifica(int k1, int k2)
{
    int r1=grupa(k1), r2=grupa(k2);
    GR[r2]=r1;
}
int main()
{
    int i;
    freopen("disjoint.in","r",stdin);
    freopen("disjoint.out","w",stdout);
    scanf("%d%d",&n,&m);
    for (i=1;i<=n;++i) GR[i]=i;
    for (i=1;i<=m;++i)
        {
            scanf("%d%d%d",&cod,&x,&y);
            if (cod==1)
                {
                    unifica(x,y);
                }
            else
                {
                    if (grupa(x)==grupa(y)) printf("DA\n");
                    else printf("NU\n");
                }
        }
    return 0;
}