Pagini recente » Cod sursa (job #197762) | Cod sursa (job #592631) | Cod sursa (job #2278806) | Cod sursa (job #1436315) | Cod sursa (job #2390588)
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>
using namespace std;
ifstream f("intrare.in");
ofstream g("disjoint.out");
struct Muchie{
int a, b;
};
void uneste(vector< vector< int > > &lista_adiacenta, int a, int b)
{
lista_adiacenta[a].push_back(b);
lista_adiacenta[b].push_back(a);
}
void BFS(int a, vector <int> &viz, vector< vector< int > > lista_adiacenta)
{
queue <int> Q;
viz[a] = 1;
Q.push(a);
while(!Q.empty())
{
int nod = Q.front();
Q.pop();
for(auto i : lista_adiacenta[nod])
{
if(viz[i] == 0)
{
viz[i] = 1;
Q.push(i);
}
}
}
}
bool verifica(vector< vector< int > > &lista_adiacenta, int a, int b, int n)
{
vector <int> viz(n+1, 0);
BFS(a, viz, lista_adiacenta);
return !viz[b];
}
int main()
{
int n, m, x, y;
f >> n >> m;
vector< vector< int > > lista_adiacenta(n+1);
for(int i = 1; i <= n; i++)
lista_adiacenta[i].push_back(i);
for(int i = 0; i < m; i++)
{
int optiune;
f >> optiune;
if(optiune == 1)
{
f >> x >> y;
uneste(lista_adiacenta, x, y);
}
if(optiune == 2)
{
f >> x >> y;
if(verifica(lista_adiacenta, x, y, n) == 1) cout <<"NU\n";
else cout <<"DA\n";
}
}
return 0;
}