Pagini recente » Cod sursa (job #148358) | Cod sursa (job #224277) | Cod sursa (job #504819) | Cod sursa (job #266816) | Cod sursa (job #916923)
Cod sursa(job #916923)
#include<fstream>
#include<vector>
#include <stddef.h>
#define maxn 100001
using namespace std;
int N,M;
vector<int> V;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
void connectM(int x,int y){
int x1=x,x2=y;
int aux;
while(V[x]) //tata
x=V[x];
while(V[y]) //fiu
y=V[y];
V[y]=x;
while(V[x1]!=x&&V[x1]){
aux=V[x1];
V[x1]=x;
x1=aux;
}
while(V[x2]!=x&&V[x2]){
aux=V[x2];
V[x2]=x;
x2=aux;
}
}
void afis(int x){
if(x)g<<"DA\n";
else g<<"NU\n";
}
void test(int x,int y){
while(V[x])
x=V[x];
while(V[y])
y=V[y];
if(x==y)
afis(1);
else
afis(0);
}
int main(){
int c,x,y;
f>>N>>M;
V.resize(N+1);
for(int i=0;i<M;i++){
f>>c>>x>>y;
if(c==1)
connectM(x,y);
else
test(x,y);
}
return 0;
}