Cod sursa(job #2657978)

Utilizator UVictorUnguroiu Victor UVictor Data 12 octombrie 2020 20:07:13
Problema Paduri de multimi disjuncte Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.25 kb
#include <fstream>

using namespace std;
int n, m, i, j, k , l, v[100005],x, y;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int main()
{
    f >> n >> m;
    for(i = 1; i <= n; i ++)
    {
        v[i] = 0;
    }
    k = 1;
    for(i = 1; i <= m; i ++)
    {
        f >> j;
        if(j == 1)
        {
            f >> x >> y;
            if(v[x] == 0 && v[y] == 0)
                v[x] = k, v[y] = k, k ++;
            if(v[x] == 0 && v[y] != 0) v[x] = v[y];
            if(v[y] == 0 && v[x] != 0) v[y] = v[x];
            if(v[x] != v[y])
            {
                if(v[x] < v[y])
                {
                    for(l = 1; l <= m; l ++)
                        if(v[l] == v[y])
                            v[l] = v[x];
                }
                else
                {
                    for(l = 1; l <= m; l ++)
                        if(v[l] == v[x])
                            v[l] = v[y];
                }
            }
        }
        else
        {
            f >> x >> y;
            if(x == y) g << "DA" << '\n';
            else
                if(v[x] == v[y] && v[x] != 0) g << "DA" <<'\n';
                                         else g << "NU" << '\n';
        }
    }
}