Cod sursa(job #1809729)

Utilizator AndreiDumitrescuAndrei Dumitrescu AndreiDumitrescu Data 19 noiembrie 2016 10:57:15
Problema Paduri de multimi disjuncte Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("disjoint.in");
ofstream g("disjoint.out");

int v[100001], ap[100001], nr , n , m;

int schimba(int a , int b)
{
    int i;
    for(i = 1 ; i <= n ; i++)
    {
        if(v[i] == a)
            v[i] = b;
    }

}

int main()
{
   int  i , j , x , y;
   f >> n >> m;
    for (i = 1; i<=n; ++i)
    v[i]=i, ap[v[i]] = 1;
   for(i = 1 ; i <= m ; i++)
   {
       f >> j >> x >> y;
       if(j == 1)
       {

            if(ap[v[x]] > ap[v[y]])
            {
                schimba(v[y] , v[x]);
                ap[v[x]] += ap[v[y]];
            }
            else
            {
                schimba(v[x], v[y]);
                ap[v[y]] += ap[v[x]];
            }
        }
       if(j == 2)
       {
            if((v[x] == v[y]) && (v[x] != 0))
                g << "DA" << '\n';
            else
                g << "NU" << '\n';
       }
   }
}