Pagini recente » Cod sursa (job #1700203) | Cod sursa (job #1426719) | Cod sursa (job #382226) | Cod sursa (job #3183848) | Cod sursa (job #662162)
Cod sursa(job #662162)
#include <iostream>
#include <fstream>
using namespace std;
int t[100001], v[100001], i, X, Y;
int Find(int k)
{
if (k!=t[k])
t[k]=Find(t[k]);
return t[k];
}
void Union(int i, int j)
{
if (v[i]>v[j])
{t[j]=i;
v[j]+=v[i];}
else
{t[i]=j;
v[i]+=v[j];}
}
int main()
{
int N, M, cod, rx, ry;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
f>>N>>M;
for (i=1; i<=N; i++)
{t[i]=i;
v[i]=1;}
for (i=1; i<=M; i++)
{f>>cod>>X>>Y;
if (cod==1)
{rx=Find(X);
ry=Find(Y);
Union(X,Y);}
else
if (Find(X)==Find(Y))
g<<"DA";
else
g<<"NU";}
f.close();
g.close();
return 0;
}