Pagini recente » Cod sursa (job #1514375) | Cod sursa (job #2158831) | Cod sursa (job #271716) | Cod sursa (job #649918) | Cod sursa (job #995246)
Cod sursa(job #995246)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
vector <int> a[100001];
int n,m,c,x,y,i,j,cx,cy,d[100001];
void verif()
{
int ii,jj;
for(ii=1;ii<=n;ii++)
{
for(jj=0;jj<a[ii].size();jj++)
g<<a[ii][jj]<<" ";
g<<'\n';
}
}
int main()
{
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>c>>x>>y;
if(c==1)
{
while(a[x].size())
{
x=a[x][0];
}
while(a[y].size())
{
y=a[y][0];
}
if(d[x]>d[y])
a[y].push_back(x);
else
if(d[y]>d[x])
a[x].push_back(y);
else
{
a[x].push_back(y);
d[y]++;
}
}
else
{
cx=x;
cy=y;
while(a[cx].size())
{
cx=a[cx][a[cx].size()-1];
}
while(a[cy].size())
{
cy=a[cy][a[cy].size()-1];
}
if(cx==cy)
g<<"DA"<<'\n';
else
g<<"NU"<<'\n';
while(a[x].size()&&a[x][a[x].size()-1]!=cx)
{
a[x].push_back(cx);
x=a[x][a[x].size()-2];
}
while(a[y].size()&&a[y][a[y].size()-1]!=cy)
{
a[y].push_back(cy);
y=a[y][a[y].size()-2];
}
}
}
return 0;
}