Cod sursa(job #1122713)

Utilizator ovidel95Ovidiu ovidel95 Data 25 februarie 2014 20:03:07
Problema Parcurgere DFS - componente conexe Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
#define NMAX 1001
using namespace std;
int n,a[NMAX][NMAX],k,sol[NMAX],viz[NMAX],cc=0;
ofstream g("dfs.out");
void dfs(int x)
{
    sol[1]=x;
    viz[x]=1;
    int i,j,c;
    i=j=1;
    do
    {
        c=1;
        while((c<=n)&&(viz[c]||!a[c][sol[i]]))
            c++;
        if(c<=n)
        {
            j++;
            sol[j]=c;
            viz[c]=1;
            i=j;
        }
        else
            i--;
    }while(i>0);
    cc+=j;
}
int main()
{
    ifstream f("dfs.in");
    ofstream g("dfs.out");
    int i,j,m,x,y;
    f>>n>>m;
    for(int i=1;i<=m;i++)
    {
        f>>x>>y;
        a[x][y]=1;
        a[y][x]=1;
    }
    int numara=0,kk,nod;
    while(cc<n)
    {
        numara++;
        kk=0;
        for(int i=1;i<=n&&kk==0;i++)
            if(viz[i]==0)
            {
                nod=i;
                kk=1;
            }
        dfs(nod);
    }
    g<<numara;
    f.close();
    g.close();
    return 0;
}