Pagini recente » Cod sursa (job #391059) | Cod sursa (job #1012532) | Cod sursa (job #2946042) | Cod sursa (job #311395) | Cod sursa (job #2530462)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int n,m,b1,a,c;
vector<int> v[100005];
bool b[100005];
queue <int> q;
void caut(int x,int y)
{
int x1,ok=0;
q.push(x);
b[x]=1;
while(!q.empty())
{
x1=q.front();
q.pop();
if(x1==y){out<<"DA"<<'\n',ok=1;break;}
for(auto i:v[x1])
{
if(b[i]==0)
{
b[i]=1;
q.push(i);
}
}
}
q.push(x);
b[x]=0;
while(!q.empty())
{
x1=q.front();
q.pop();
for(auto i:v[x1])
{
if(b[i]==1)
{
b[i]=0;
q.push(i);
}
}
}
if(!ok)
out<<"NU"<<'\n';
}
int main()
{
in>>n>>m;
for(int i=1;i<=m;i++)
{
in>>c>>a>>b1;
if(c==1)
{
v[a].push_back(b1);
v[b1].push_back(a);
}
else caut(a,b1);
}
return 0;
}