Pagini recente » Cod sursa (job #1594861) | Cod sursa (job #2655824) | Cod sursa (job #333524) | Cod sursa (job #2899956) | Cod sursa (job #508638)
Cod sursa(job #508638)
#include<fstream>
# include<vector>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
# define nmax 100002
int n,m,tata[nmax],h[nmax];
void unire()
{
int i,j;
f>>i>>j;
while(tata[i])
i=tata[i];
while(tata[j])
j=tata[j];
if(h[i]>h[j])
tata[j]=i;
else if(h[i]<h[j])
tata[i]=j;
else{
tata[i]=j;
h[i]++;
}
}
void verificare()
{
int i,j;
f>>i>>j;
while(tata[i])
i=tata[i];
while(tata[j])
j=tata[j];
if(i==j) g<<"DA\n";
else g<<"NU\n";
}
int main()
{
f>>n>>m;int x;
for(;m;--m)
{
f>>x;
if(x==1)
unire();
if(x==2)
verificare();
}
}