Cod sursa(job #2328394)

Utilizator denmirceaBrasoveanu Mircea denmircea Data 25 ianuarie 2019 18:20:10
Problema Paduri de multimi disjuncte Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>
#include <iostream>
#include <vector>
#include <math.h>
#include <cstring>
#include <string.h>
#include <algorithm>
#include <bitset>
#include <queue>
using namespace std;

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

int n,m;
struct muchii
{
	int x,y;
};
muchii G[500001];
int C[100001];

int main()
{
	in>>n>>m;
	for(int i=1; i<=n; i++)
		C[i]=i;
	for(int i=1; i<=m; i++)
	{
		int a,maxim,minim;
		in>>a>>G[i].x>>G[i].y;
		if(a==2)
			if(C[G[i].x]!=C[G[i].y])
			{
				out<<"NU"<<"\n";
			}
			else
				out<<"DA"<<"\n";
		if(a==1)
		{
			if(C[G[i].x]!=C[G[i].y])
			{
				if(C[G[i].x]>C[G[i].y])
				{
					maxim=C[G[i].x];
					minim=C[G[i].y];
				}
				else
				{
					maxim=C[G[i].y];
					minim=C[G[i].x];
				}
				for(int i=1; i<=n; i++)
				{
					if(C[i]==maxim)
						C[i]=minim;
				}
			}
		}
	}

	return 0;
}