Pagini recente » Cod sursa (job #1186365) | Cod sursa (job #564739) | Cod sursa (job #2178907) | Cod sursa (job #2863392) | Cod sursa (job #1328808)
#include <iostream>
#include<fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n, m, x, y, cod, p[100002], rang[100002];
int cautare(int x)
{ if(x!=p[x]) p[x]=cautare(p[x]);
return p[x];
}
void unite(int x, int y)
{ int px=cautare(x);
int py=cautare(y);
if(rang[px]>rang[py])
p[py]=x;
else p[px]=y;
if(rang[px]==rang[py]) rang[px]++;
}
int main()
{ f>>n>>m;
for(int i=1; i<=n; i++) {p[i]=i; rang[i]=1;}
for(int i=1;i<=m; i++) {f>>cod>>x>>y;
if(cod==1) {if(cautare(x)!=cautare(y)) unite(x,y);}
else if(cautare(x)==cautare(y)) g<<"DA"<<"\n";
else g<<"NU"<<"\n";}
return 0;
}