Pagini recente » Cod sursa (job #827564) | Profil _Raoul_16 | Cod sursa (job #384770) | Cod sursa (job #1091389) | Cod sursa (job #2073155)
#include <fstream>
#include <stdlib.h>
#define NMAX 100000
using namespace std;
int tomb[NMAX];
ofstream g("disjoin.out");
int root(int a){
int i=a;
while(i!=tomb[i]){
i=tomb[i];
}
return i;
}
void unite(int a, int b){
int root1=root(a);
int root2=root(b);
if(root1!=root2){
tomb[root1]=root2;
}
}
void ask(int a,int b){
int root1=root(a);
int root2=root(b);
if(root1==root2){
g<<"DA\n";
}
else{
g<<"NU\n";
}
}
int main()
{
ifstream f("disjoin.in");
ofstream g("disjoin.out");
int n,m,muv,a,b;
f>>n>>m;
bool ok;
for(int i=1;i<=n;i++){
tomb[i]=i;
}
for(int i=0;i<m;i++){
f>>muv>>a>>b;
if(muv==1){
unite(a,b);
}
else{
ask(a,b);
}
}
f.close();
g.close();
return 0;
}