Pagini recente » Borderou de evaluare (job #2075877) | Borderou de evaluare (job #625516) | Borderou de evaluare (job #362077) | Borderou de evaluare (job #1336277) | Cod sursa (job #1505413)
#include <iostream>
#include <limits.h>
#include <cmath>
#include <string>
#include <stdio.h>
#include <algorithm>
#include <stdlib.h>
#include <vector>
#include <stack>
#include <map>
#include <fstream>
#include <list>
#include <queue>
#include <iomanip>
#include <deque>
#include <set>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int T[100001];
int caut(int x)
{
int y = x;
while(T[x] != x)
x = T[x];
T[y] = x;
return x;
}
int unesc(int a, int b)
{
int x = caut(a);
int y = caut(b);
T[x] = y;
}
int main()
{
int n,m;
f >> n >> m;
for(int i = 1; i<=n; i++)
T[i] = i;
for(int i = 1; i<=m; i++)
{
int x,y,z;
f >> x >> y >> z;
if (x == 1)
unesc(y,z);
if (x == 2)
if (caut(y) == caut(z))
g<<"DA"<<'\n';
else
g<<"NU"<<'\n';
}
return 0;
}