Cod sursa(job #1729813)

Utilizator Y0da1NUME JMECHER Y0da1 Data 15 iulie 2016 17:53:31
Problema Paduri de multimi disjuncte Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
///cel mai prost algoritm O(n^2)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int n, m, s[100002];
int find1(int x)
{
    return s[x];
}
void reuniune(int a, int b)
{
    int i, j;
    i=a;
    j=b;
    if(i>j)
        swap(i, j);
    for(int k=j;k<=n;++k)
        if(s[k]==j)
            s[k]=i;

}
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)
            reuniune(find1(x), find1(y));
        else
        {
            if(find1(x)==find1(y))
                h<<"DA\n";
            else
                h<<"NU\n";
        }
    }
    g.close();
    h.close();
    return 0;
}