Pagini recente » Cod sursa (job #2636636) | Istoria paginii runda/tema_4/clasament | Cod sursa (job #2277752) | Cod sursa (job #2300633) | Cod sursa (job #2408810)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
//vector <int> tata;
int tata[1000];
int grad[1000];
int n,m;
int find_father(int node)
{
if(tata[node] == node)
return node;
tata[node] = find_father(tata[node]);
return tata[node];
}
void Read()
{
int cod,x,y;
//FILE* f=fopen("disjoint.in","r");
//FILE* g=fopen("disjoint.out","w");
//fscanf(f,"%d %d",&n,&m);
ifstream f("disjoint.in");
ofstream g("disjoint.out");
f >> n >> m;
for(int i=0;i<n;i++)
{
tata[i] = i;
grad[i] = 1;
}
for(int i=0;i<m;i++)
{
f >> cod >> x >> y;
if(cod == 1)
{
//Adaug in multime
if(find_father(x) != find_father(y))
{
if(grad[x] < grad[y])
{
tata[x] = tata[y];
grad[y] += grad[x];
}
else
{
tata[y] = tata[x];
grad[x] += grad[y];
}
}
}
else
{
//Verific daca sunt in aceiasi componenta
if(find_father(x) == find_father(y))
//printf("DA\n");
g << "DA" << endl;
else
//printf("NU\n");
g << "NU" << endl;
}
}
}
int main()
{
Read();
return 0;
}