Cod sursa(job #1790062)

Utilizator victor123Victor victor123 Data 27 octombrie 2016 19:01:34
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <cstdio>

using namespace std;
const int nmax=100005;
int t[nmax],h[nmax];

int main()
{
	freopen("disjoint.in","r",stdin);
	freopen("disjoint.out","w",stdout);
    int i,n,m,u,v,a;
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++)
		{
		t[i]=i;
		h[i]=1;
		}
    for(i=1;i<=m;i++)
	{
		scanf("%d%d%d",&a,&u,&v);
		if(a==1)
		{
			if(t[u]!=t[v])
			{
				if(h[t[u]]==h[t[v]])
				{
					t[v]=t[u];
					h[[t[u]]++;
				}
				else if(h[t[u]]>h[t[v]])
					t[v]=t[u];
				else
					t[u]=t[v];
			}
		}
		else
		{
			if(t[u]==t[v])
				printf("DA");
			else
				printf("NU");
		}
	}
}