Pagini recente » Cod sursa (job #1551650) | Cod sursa (job #1276051) | Cod sursa (job #1210344) | Istoria paginii runda/cerculdeinfo-lectia1-hashuri.rabinkarp/clasament | Cod sursa (job #1693764)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("disjoint.in");
ofstream g("dijoint.out");
vector <int> m[100001];
int v[100001],n,o,p,a,b,i;
void unire(int a,int b)
{
int i,j,k;
k=m[v[b]].size();
for(j=0; j<k; ++j)
m[v[a]].push_back(m[v[b]][j]);
j=v[b];
for(i=0; i<k; ++i)
v[m[j][i]]=v[a];
}
int main()
{
f>>n>>o;
for(i=1; i<=n; ++i)
{
v[i]=i;
m[i].push_back(i);
}
for(i=1; i<=o; ++i)
{
f>>p>>a>>b;
switch(p)
{
case 2:
if(v[a]==v[b])
g<<"DA\n";
else
g<<"NU\n";
break;
case 1:
if(v[b]<v[a])
swap(a,b);
unire(a,b);
break;
}
}
}