Cod sursa(job #2861496)
Utilizator | Morosanu Alexandru alexmorosanu | Data | 4 martie 2022 08:10:44 |
---|---|---|---|
Problema | Paduri de multimi disjuncte | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 1.08 kb |
#include <fstream>
#include <vector>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
vector <int> v[100011];
int n,m,i,j,C,x,y,fam[100011],aux;
int main()
{
f>>n>>m;
for(i=1;i<=n;i++)
{
fam[i]=i;
v[i].push_back(i);
}
for(i=1;i<=m;i++)
{
f>>C>>x>>y;
if(C==1)
{
if(v[fam[x]].size()<v[fam[y]].size())
{
aux=fam[x];
for(j=0;j<v[aux].size();j++)
{
fam[v[aux][j]]=fam[y];
v[fam[y]].push_back(v[aux][j]);
}
}
else
{
aux=fam[y];
for(j=0;j<v[aux].size();j++)
{
fam[v[aux][j]]=fam[x];
v[fam[x]].push_back(v[aux][j]);
}
}
}
else
{
if(fam[x]==fam[y])
g<<"DA"<<'\n';
else
g<<"NU"<<'\n';
}
}
return 0;
}