Cod sursa(job #1330519)

Utilizator Consti.001FMI Dranca Constantin Consti.001 Data 30 ianuarie 2015 19:07:10
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<fstream>
#include<vector>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
struct nod
{
    int tata;
    int vf;
}s;
vector <nod> l;
int n,m,i,j,k,ok,x,y,q;
void read()
{
    f>>n>>m;
    s.tata=0;
    s.vf=0;
    l.push_back(s);
    for(i=1;i<=n;i++)
    {
        s.vf=i;
        s.tata=i;
        l.push_back(s);
    }
}
void reunion(int x, int y)
{
    l[y].vf=l[x].vf;
    l[y].tata=l[x].tata;
}
void caut(int x, int y)
{
    while(l[x].tata!=x)
    x=l[x].tata;
    while(l[y].tata!=y)
    y=l[y].tata;
    if(x==y)
    g<<"DA\n";
    else
    g<<"NU\n";
}
void solve()
{
    for(k=1;k<=m;k++)
    {
        f>>q>>x>>y;
        if(q==1)
        reunion(x,y);
        else
        if(q==2)
        caut(x,y);
    }
}
int main()
{
    read();
    solve();
}