Cod sursa(job #2397260)

Utilizator alex_galatanAlex Galatan alex_galatan Data 4 aprilie 2019 11:49:27
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.78 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <list>

std::ifstream f("disjoint.in");
std::ofstream g("disjoint.out");

int searchM(std::list<int> g, int x)
{
    std::list <int> :: iterator it;
    for(it = g.begin(); it != g.end(); ++it)
        if (*it == x)
            return 1;
    return 0;
}

void printM(std::list<int> g)
{
    std::list <int> :: iterator it;
    for(it = g.begin(); it != g.end(); ++it)
        std::cout<<*it<<" ";
    std::cout<<std::endl;
}

int main()
{
    int n, m, cod, x, y, i, j, l;

    f>>n>>m;

    std::vector <std::list <int>> multimi;

    for (i = 0; i < n; i++)
    {
        std::list <int> a;
        a.push_back(i + 1);
        multimi.push_back(a);
    }

    for(l = 0; l < m; l++)
    {
        f>>cod>>x>>y;
        if (cod == 1)
        {
            for (i = 0; i < n; i++)
                if (searchM(multimi[i], x) == 1)
                    for (j = i + 1; j < n; j++)
                        if (searchM(multimi[j], y) == 1)
                        {
                            multimi[i].merge(multimi[j]);
                            multimi[j] = multimi[i];
                        }

        }
        else
        {
            for (i = 0; i < n; i++)
                if (searchM(multimi[i], x) == 1 && searchM(multimi[i], y) == 1)
                {
                    cod = 0;
                    g<<"DA"<<std::endl;
                    break;
                }
            if (cod > 0)
                g<<"NU"<<std::endl;

        }
        /*
        for(i = 0; i < n; i++)
        {
            std::cout<<i<<": ";
            printM(multimi[i]);
        }
        std::cout<<std::endl;
        */
    }


    f.close();
    g.close();
    return 0;
}