Cod sursa(job #2657975)

Utilizator UVictorUnguroiu Victor UVictor Data 12 octombrie 2020 19:55:39
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <fstream>

using namespace std;
int n, m, i, j, k , l, v[1000000],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(v[x] == v[y]) g << "DA" <<'\n';
            else g << "NU" << '\n';
        }
    }
}