Cod sursa(job #596573)

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

using namespace std;

int parinte[100001];
int num_str[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_str,100001,0);
    int x,y,i;
    for (i=0; i<m; i++)
    {
        f >> x >> y;
        if (num_str[x]<num_str[y])
        {
            while (parinte[x]>-1)
            {
                num_str[x]++;
                x=parinte[x];
            }
            while (parinte[y]>-1) y=parinte[y];
            parinte[x]=y;
            num_str[x]++;
        } else
        {
            while (parinte[x]>-1) x=parinte[x];
            while (parinte[y]>-1)
            {
                num_str[y]++;
                y=parinte[y];
            }
            parinte[y]=x;
            num_str[y]++;
        }
    }
    int nr=0;
    for (i=1; i<=n; i++)
        if (parinte[i]==-1) nr++;
    g << nr;
    return 0;
}