Cod sursa(job #2861496)

Utilizator alexmorosanuMorosanu Alexandru alexmorosanu Data 4 martie 2022 08:10:44
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
vector <int> v[100011];
int n,m,i,j,C,x,y,fam[100011],aux;
int main()
{
    f>>n>>m;
    for(i=1;i<=n;i++)
    {
        fam[i]=i;
        v[i].push_back(i);
    }
    for(i=1;i<=m;i++)
    {
        f>>C>>x>>y;
        if(C==1)
        {
            if(v[fam[x]].size()<v[fam[y]].size())
            {
                aux=fam[x];
                for(j=0;j<v[aux].size();j++)
                {
                    fam[v[aux][j]]=fam[y];
                    v[fam[y]].push_back(v[aux][j]);
                }
            }
            else
            {
                aux=fam[y];
                for(j=0;j<v[aux].size();j++)
                {
                    fam[v[aux][j]]=fam[x];
                    v[fam[x]].push_back(v[aux][j]);
                }
            }
        }
        else
        {
            if(fam[x]==fam[y])
                g<<"DA"<<'\n';
            else
                g<<"NU"<<'\n';
        }
    }
    return 0;
}