Pagini recente » Cod sursa (job #955775) | Cod sursa (job #3237435) | Cod sursa (job #785195) | Cod sursa (job #1354231) | Cod sursa (job #3266732)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n,m;
vector<int> a,b;
void reun(int st,int dr)
{
while(a[st]!=st)
st = a[st];
while(a[dr]!=dr)
dr = a[dr];
if(b[st]<b[dr])
swap(st,dr);
a[st] = dr;
b[st] = b[st] + b[dr];
b[dr] = 0;
}
void afisare(int st,int dr)
{
while(a[st]!=st)
st = a[st];
while(a[dr]!=dr)
dr = a[dr];
if(st==dr)
g<<"DA"<<"\n";
else g<<"NU"<<"\n";
}
void citire()
{
f>>n>>m;
for(int i = 0;i<=n;i++)
a.push_back(i);
b.resize(a.size(),1);
for(int i = 1;i<=m;i++)
{
int c,st,dr;
f>>c>>st>>dr;
if(c==1)
reun(st,dr);
else
afisare(st,dr);
}
}
int main()
{
citire();
}