Cod sursa(job #1560269)

Utilizator jordasIordache Andrei Alexandru jordas Data 2 ianuarie 2016 12:53:17
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#define nMax 100001
#include <fstream>

using namespace std;

 ifstream x ("disjoint.in");
 ofstream y ("disjoint.out");

 struct struct1
 {
     int group;
     struct1 *prev,*next;
 };

 int n,m;
 struct1 *node[nMax],*temp,*current;

int main()
{
    int i;

    x>>n>>m;

    for(i=1;i<=n;i++)
    {
        node[i]=new struct1();
        node[i]->group=i;
    }

    int key,a,b;

    for(i=0;i<m;i++)
    {
        x>>key;
        x>>a>>b;

        if(key==1)
        {
            temp=node[a];

            while(temp->next)
                temp=temp->next;

            current=node[b];

            while(current->prev)
                current=current->prev;

            temp->next=current;
            current->prev=temp;

            while(current)
            {
                current->group=node[a]->group;

                current=current->next;
            }
        }
        else
            if(node[a]->group==node[b]->group)
                y<<"DA\n";
            else
                y<<"NU\n";
    }

    return 0;
}