Cod sursa(job #3251280)

Utilizator staicumateiStaicu Matei Octavian staicumatei Data 25 octombrie 2024 16:25:36
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("disjoint.in");
ofstream g("disjoint.out");

int man[100002];

int caut(int u)
{
    if(man[u]==u)
    {
        return u;
    }
    return man[u]=caut(man[u]);
}
void unite(int x,int y)
{
    x=caut(x);
    y=caut(y);
    if(x!=y)
    {
        man[x]=y;
    }
    return;
}
int main()
{
    int n, m, k, a, b;
    f>>n>>m;
    for(int i=1;i<=n;i++)
    {
        man[i]=i;
    }
    for(int i=0;i<m;i++)
    {
        f>>k>>a>>b;
        if(k==1)
        {
            unite(a, b);
        }
        else
        {
            if(caut(a)==caut(b))
            {
                g<<"DA"<<endl;
            }
            else
            {
                g<<"NU"<<endl;
            }
        }
    }
    return 0;
}