Pagini recente » Cod sursa (job #1009507) | Statistici B Vlad (BVlad) | Cod sursa (job #2619596) | Cod sursa (job #1800418) | Cod sursa (job #1297484)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream f("disjoint.in");
ofstream go("disjoint.out");
vector< queue<int> > g;
vector< int > v;
int n,m,act,x,y;
void join(int x, int y){
/*cerr << " ";
for(int i=1; i<=n; i++)
cerr << v[i] << " ";
cerr << "\n";
*/
int hi,lo,aux;
if(g[v[x]].size()>g[v[y]].size()){
hi=v[x];
lo=v[y];
}else{
hi=v[y];
lo=v[x];
}
while(!g[lo].empty()){
aux=g[lo].front();
v[aux]=hi;
g[hi].push(aux);
g[lo].pop();
}
/* cerr <<" ";
for(int i=1; i<=n; i++)
cerr << v[i] << " ";
cerr << "\n";
*/
}
int main()
{
f>>n>>m;
g.resize(n+1);
for(int i=0; i<=n; i++){
v.push_back(i);
g[i].push(i);
}
for(int i=1; i<=m; i++){
f>>act>>x>>y;
// cerr << act << " " << x <<" "<< y<< "\n";
if (act==1) join(x,y);
else if (v[x]==v[y]) go<<"DA\n";
else go<<"NU\n";
}
f.close();
go.close();
return 0;
}