Cod sursa(job #2108957)

Utilizator serjiuuAvacaritei Sergiu serjiuu Data 18 ianuarie 2018 22:47:45
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>

using namespace std;

ifstream fin("disjoint.in");
ofstream fout("disjoint.out");

const int nmax=100005, mmax=100005;

int n, m;
int vis[nmax];

inline void union_find(int x, int y)
{
    int i, mark;

    mark=vis[y];

    if(vis[x]!=vis[y])
        vis[y]=x;
    else
        return;

    for(i=1;i<=n;i++)
    {
        if(vis[i]==mark)
            vis[i]=x;
    }
}
inline void check_union(int x, int y)
{
    if(vis[x]==vis[y])
        fout<<"DA";
    else
        fout<<"NU";

    fout<<'\n';
}
void read_data_and_solve()
{
    int x, y, code, i;

    fin>>n>>m;

    for(i=1;i<=n;i++)
        vis[i]=i;

    for(i=1;i<=m;i++)
    {
        fin>>code>>x>>y;

        if(code==1)
            union_find(x,y);
        else
            check_union(x,y);
    }
}
int main()
{
    read_data_and_solve();
}