Cod sursa(job #1729870)

Utilizator Y0da1NUME JMECHER Y0da1 Data 15 iulie 2016 18:43:00
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
///O(n^2) wc - metoda arbore cu radacina
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int n, m, s[100002];
int find2(int x)
{
    int i = x;
    while (s[i]!=i)
        i=s[i];
    return i;
}
void reuniune2(int a, int b)
{
    if(a<b)
        s[b]=a;
    else
        s[a]=b;
}
int main()
{
    int cod, x, y;
    ifstream g ("disjoint.in");
    ofstream h ("disjoint.out");
    g>>n>>m;
    for(int i=1;i<=n;++i)
        s[i]=i;
    for(int i=1;i<=m;++i)
    {
        g>>cod>>x>>y;
        if(cod==1)
            reuniune2(find2(x), find2(y));
        else
        {
            if(find2(x)==find2(y))
                h<<"DA\n";
            else
                h<<"NU\n";
        }
    }
    g.close();
    h.close();
    return 0;
}