Pagini recente » Cod sursa (job #1326100) | Cod sursa (job #1523464) | Cod sursa (job #1025737) | Cod sursa (job #2671954) | Cod sursa (job #2940285)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int radacina(int x, vector<int> tata)
{
if(tata[x]==0) return x;
else return radacina(tata[x],tata);
}
int main()
{
vector<int> tata;
vector<int> multime;
int n,m,c,x,y;
f>>n>>m;
tata.resize(n+m,0);
multime.resize(n+m,0);
for(int i=0;i<m;i++)
{
f>>c>>x>>y;
int r1= radacina(x,tata), r2=radacina(y,tata);
if(c==1)
{
if(multime[r1] < multime[r2]) tata[r1]=r2;
else if(multime[r1]==multime[r2]) {tata[r1]=r2; multime[r2]+=1;}
else tata[r2]=r1;
}
else
{
if(r1==r2) g<<"DA"<<endl;
else g<<"NU"<<endl;
}
}
f.close();
g.close();
return 0;
}