Pagini recente » Cod sursa (job #317019) | Cod sursa (job #1376314) | Cod sursa (job #853713) | Cod sursa (job #940398) | Cod sursa (job #2936130)
#include <vector>
#include <fstream>
using namespace std;
ifstream fileIn("disjoint.in");
ofstream fileOut("disjoint.out");
class Graph {
int N;
int M;
vector <int> r;
public:
void initializeaza_r();
void reuneste(int a, int b) ;
void rezolva();
};
void Graph::initializeaza_r() {
r.resize(N + 1, 0);
for( int i = 0; i <= N; i++) {
r[i]=i;
}
}
void Graph::reuneste(int a, int b) {
int r1 = r[a];
int r2 = r[b];
for( int k = 1; k <= N ; k++) {
if (r[k] == r2) {
r[k] = r1;
}
}
}
void Graph:: rezolva() {
fileIn >> N >> M;
initializeaza_r();
int op, a, b;
while(M) {
fileIn >> op >> a >> b;
if (op == 1) {
reuneste(a,b);
} else {
if (r[a] == r[b]) {
fileOut << "DA\n";
} else {
fileOut << "NU\n";
}
}
M--;
}
}
int main() {
Graph my_graph;
my_graph.rezolva();
return 0;
}