Pagini recente » Cod sursa (job #1939932) | Cod sursa (job #1044028) | Cod sursa (job #2974551) | Cod sursa (job #3199020) | Cod sursa (job #2170639)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
vector<int> v[100002];
int ok[100002],n,m,type,x,y;
void verok(int x, int y)
{
if(ok[x]==0 && ok[y]==0)
{
ok[x]=x;
ok[y]=x;
v[x].push_back(y);
}
else
{
if(ok[x]!=0 && ok[y]==0)
{
ok[y]=ok[x];
v[ok[x]].push_back(y);
}
else
{
if(ok[x]==0 && ok[y]!=0)
{
ok[x]=ok[y];
v[ok[y]].push_back(x);
}
else
{
if(ok[x]!=0 && ok[y]!=0 && ok[y]!=ok[x])
{
int ky;
ky=ok[y];
for(int i=0;i<v[ky].size();i++)
{
v[ok[x]].push_back(v[ky][i]);
ok[v[ky][i]]=ok[x];
}
}
}
}
}
}
void bushdid911(int x, int y)
{
if(ok[x]==ok[y])
g<<"DA"<<"\n";
else
g<<"NU"<<"\n";
}
int main()
{
f>>n>>m;
for(int i=1;i<=m;i++)
{
f>>type>>x>>y;
if(type==1)
verok(x,y);
else
bushdid911(x, y);
}
f.close();
g.close();
return 0;
}