Cod sursa(job #3229063)
Utilizator | Bogdan Cristian Skibo | Data | 13 mai 2024 17:09:56 |
---|---|---|---|
Problema | Paduri de multimi disjuncte | Scor | 0 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 1.45 kb |
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#include <climits>
#include <stack>
using namespace std;
ifstream fin("disjoint.in"); /// parc.in
ofstream fout("disjoint.out");
queue <int> q;
int n, m, c, x, y, vt[100001], a, b;
int main()
{
fin>>n>>m;
for(int i = 1; i<=m; i++)
{
fin>>c>>x>>y;
if(c == 1)
{
a = x;
b = y;
while(vt[a] != 0)
a = vt[a];
while(vt[b] != 0)
b = vt[b];
int a1 = x;
int b1 = y;
while(vt[a1] != 0)
{
a1 = vt[a1];
vt[a1] = a;
}
while(vt[b1] != 0)
{
b1 = vt[b1];
vt[b1] = b1;
}
vt[b] = a;
}
else
{
a = x;
b = y;
while(vt[a] != 0)
a = vt[a];
while(vt[b] != 0)
b = vt[b];
int a1 = x;
int b1 = y;
while(vt[a1] != 0)
{
a1 = vt[a1];
vt[a1] = a;
}
while(vt[b1] != 0)
{
b1 = vt[b1];
vt[b1] = b1;
}
if(a == b)
fout<<"DA"<<endl;
else fout<<"NU"<<endl;
}
}
}