Cod sursa(job #596594)

Utilizator ion_calimanUAIC Ion Caliman ion_caliman Data 17 iunie 2011 20:28:09
Problema Parcurgere DFS - componente conexe Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>

using namespace std;

int parinte[100001];
int num_nep[100001];
int n,m;
int main()
{
    ifstream f("dfs.in");
    ofstream g("dfs.out");
    f >> n >> m;
    fill_n(parinte,100001,-1);
    fill_n(num_nep,100001,0);
    int x,y,i;
    for (i=0; i<m; i++)
    {
        f >> x >> y;
        if (num_nep[x]<num_nep[y])
        {
            while (parinte[x]>-1)
            {
                x=parinte[x];
                num_nep[x]++;
            }
            while (parinte[y]>-1) y=parinte[y];
            parinte[x]=y;
            num_nep[y]+=num_nep[x];
        } else
        {
            while (parinte[x]>-1) x=parinte[x];
            while (parinte[y]>-1)
            {
                y=parinte[y];
                num_nep[y]++;
            }
            parinte[y]=x;
            num_nep[x]+=num_nep[y];
        }
    }
    int nr=0;
    for (i=1; i<=n; i++)
        if (parinte[i]==-1) nr++;
    g << nr;
    return 0;
}