Cod sursa(job #1442767)

Utilizator iacovladNot Available iacovlad Data 26 mai 2015 11:02:33
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include<iostream>
#include<fstream>
using namespace std;
int N,M,i,j,tip,x,yst,yfn,temp;
int a[100005][4];

void initializare();

int main()
{
    ifstream f("disjoint.in");
    ofstream g("disjoint.out");
    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;
                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;
}