Cod sursa(job #2352565)

Utilizator AndreiCroitoruAndrei Croitoru AndreiCroitoru Data 23 februarie 2019 13:45:49
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.62 kb
#include <fstream>

using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int sef[100001];
int sefsuprem (int i)
{
	if(sef[i]==i)
	{
		return i;
	}
	return sef[i]=sefsuprem(sef[i]);
}
void unire(int x,int y)
{
	sef[x]=sefsuprem(x);
	sef[y]=sefsuprem(y);
	sef[sef[x]]=sef[y];
}
int main()
{
    int n,m,p,a,b;
    in>>n>>m;
    for(int j=1;j<=n;j++)
    {
    	sef[j]=j;
    }
    for(int j=1;j<=m;j++)
    {
		in>>p>>a>>b;
		if(p==1)
		unire(a,b);
		if(p==2)
		{
			if(sefsuprem(a)==sefsuprem(b))
			out<<"DA"<<'\n';
			else
			out<<"NU"<<'\n';
		}
    }
    return 0;
}