Cod sursa(job #2365822)
| Utilizator | Data | 4 martie 2019 16:40:59 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.92 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int i,t[100001],h[100001],b,c,a,n,m;
int main()
{
f>>n>>m;
for(i=1;i<=n;i++)
{
t[i]=i;
h[i]=1;
}
for(i=1;i<=m;i++)
{
f>>a>>b>>c;
if(a==1)
{
//cb=b,cc=c;
while(t[b]!=b)
b=t[b];
while(t[c]!=c)
c=t[c];
if(h[b]>=h[c])
{
t[c]=b;
h[b]=h[c]+h[b];
}
else
{
t[b]=c;
h[c]=h[c]+h[b];
}
}
else
{
while(t[b]!=b)
b=t[b];
while(t[c]!=c)
c=t[c];
if(b==c)
g<<"DA"<<'\n';
else
g<<"NU"<<'\n';
}
}
return 0;
}
