Pagini recente » Cod sursa (job #1273817) | Cod sursa (job #1224127) | Cod sursa (job #2020838) | Cod sursa (job #3331838) | Cod sursa (job #1819292)
#include <iostream>
#include <fstream>
#include <vector>
#include <bitset>
#include <queue>
#define NMAX 100001
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
vector <int> G[NMAX];
bitset <NMAX> mark;
queue <int> q;
int n, m;
int bfs(int start, int _find)
{
mark.reset();
mark.set(start);
q.push(start);
int node, ok = 0;
while (!q.empty() && !ok)
{
node = q.front();
for (unsigned int i = 0; i < G[node].size(); i++)
if (!mark.test(G[node][i]))
{
q.push(G[node][i]);
mark.set(G[node][i]);
if (G[node][i] == _find)
ok = 1;
}
q.pop();
}
return ok;
}
int main()
{
in >> n >> m;
int x, y, op;
for (int i = 1; i <= m; i++)
{
in >> op >> x >> y;
if (op == 1)
{
G[x].push_back(y);
G[y].push_back(x);
}
else
out << ((bfs(x, y)) ? "DA\n" : "NU\n");
}
out.close();
return 0;
}