Cod sursa(job #2390652)

Utilizator dornexDorneanu Eduard-Gabriel dornex Data 28 martie 2019 11:19:52
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>

using namespace std;

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

int comp[100001];

void reuneste(vector <vector <int > > &noduri_comp, int a, int b, int n)
{
    if(b > a) swap(b, a);
    for(int i = 1; i <= n; i++)
    {
        if(comp[i] == comp[b])
        {
            comp[i] = comp[a];
            noduri_comp[i].push_back(i);
        }
    }
}

int main()
{
	int n, m, x, y;
	f >> n >> m;

	vector< vector< int > > lista_adiacenta(n+1);


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


	for(int i = 0; i < m; i++)
	{
		int optiune;
		f >> optiune;

		if(optiune == 1)
		{
			f >> x >> y;
            reuneste(lista_adiacenta, x, y, n);
		}

		if(optiune == 2)
		{
			f >> x >> y;
			if(comp[x] == comp[y]) cout << "DA\n";
			else cout <<"NU\n";
		}
	}
	return 0;
}