Cod sursa(job #2397254)

Utilizator cochinteleandreeaCochintele Andreea Elena cochinteleandreea Data 4 aprilie 2019 11:47:31
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>
#include <vector>
using namespace std;

int main()
{
    ifstream f("disjoint.in");
    ofstream g("disjoint.out");
    int n,m,cod,x,y,k=0,nr1,nr2;
   f>>n>>m;
   int comp[n];
   vector< vector <int> > nod_comp(n+1);
    vector<int>::iterator ptr;

    for(int i=1;i<=n;i++) {
        comp[i]=i;
        nod_comp[i].push_back(i);
    }

   for(int i=1;i<=m;i++)
   {
       f>>cod>>x>>y;
       if(cod==1)
       {
               if(nod_comp[comp[x]].size() > nod_comp[comp[y]].size())
                 {nr1=comp[x];
                  nr2=comp[y];
                 }

                else {
                        nr1=comp[y];
                        nr2=comp[x];
                 }

               for(ptr = nod_comp[nr2].begin(); ptr != nod_comp[nr2].end(); ++ptr)
               {
                nod_comp[nr1].push_back(*ptr);
                comp[*ptr]=nr1;
               }
       }
       else
        {
           if(comp[x]==comp[y]) g<<"DA"<<"\n";
           else g<<"NU"<<"\n";
       }
   }
    return 0;
}