Cod sursa(job #372568)

Utilizator dead_knightTitei Paul Adrian dead_knight Data 10 decembrie 2009 20:14:04
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<fstream>
using namespace std;
int n,m,t[100004],nrc,h[100004];
int rad(int x)
{
    while(t[x])
        x=t[x];
    return x;
}

void reuniune(int x,int y)
{
    int rx=rad(x);
    int ry=rad(y);
    if(rx!=ry)
    {
        nrc--;
        if(h[rx]>h[ry])
            t[ry]=rx;
        else
        {
            if(h[rx]<h[ry])
                t[rx]=ry;
            else
                t[rx]=ry,h[ry]++;
        }
    }
}

int main()
{
    ifstream fin("dfs.in");
    fin>>n>>m;
    nrc=n;
    for( ; m ;m--)
    {
        int i,j;
        fin>>i>>j;
        reuniune(i,j);
    }
    ofstream fout("dfs.out");
    fout<<nrc;
    return 0;
}