Cod sursa(job #1387226)

Utilizator BogdanisarBurcea Bogdan Madalin Bogdanisar Data 13 martie 2015 20:29:12
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.38 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int N,M,i,j,tip,x,yst,yfn,temp;
int a[100005][4];

void initializare();

int main()
{
    f>>N>>M;
    initializare();
    for (int cont1=0;cont1<M;++cont1)
    {
        f>>tip>>x>>yfn;
        if (x>yfn)
            swap(x,yfn);
        switch (tip)
        {
            case 1:
            {
                yst=a[yfn][0];
                a[yfn][0]=a[x][0];
                i=x;
                while (a[i][2]!=0)
                    i=a[i][2];
                a[i][2]=yst;
                a[yst][1]=i;
                /*for (i=1;i<=N;++i)
                {
                    for (j=0;j<3;++j)
                        cout<<a[i][j]<<' ';
                    cout<<'\n';
                }
                cout<<"\n\n";*/
                break;
            }
            case 2:
            {
                i=x;
                while (a[i][2]!=0)
                    i=a[i][2];
                j=yfn;
                while (a[j][2]!=0)
                    j=a[j][2];
                if (i==j)
                    g<<"DA"<<'\n';
                else
                    g<<"NU"<<'\n';
            }
        }
    }
    f.close();g.close();
    return 0;
}

void initializare()
{
    for (i=1;i<=N;++i)
        a[i][0]=a[i][3]=i;
}