Cod sursa(job #1503242)

Utilizator Y0da1NUME JMECHER Y0da1 Data 15 octombrie 2015 19:31:20
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>
//#include <iostream>
using namespace std;
int v[1001][1001], vf, nr=0, n;
int viz[1001], st[1001];
void init(int k)
{
    //cout<<"Init\n";
    vf=1;
    st[vf]=k;
    viz[k]=1;
    //cout<<"Init OK!\n";
}
void df()
{
    //cout<<"Defeu!\n";
    int i=1, k=st[vf];
    while(i<=n && (v[k][i]==0 || (v[k][i]==1 && viz[i]==1)))
        i++;
    if(i==n+1)
        vf--;
    else
    {
        nr++;
        vf++;
        st[vf]=i;
        viz[i]=1;
    }
}
int main()
{
    ifstream g ("dfs.in");
    ofstream h ("dfs.out");
    int m, x, y, i;
    g>>n>>m;
    for(i=0;i<m;i++)
    {
        //cout<<"Citire OK!\n";
        g>>x>>y;
        v[x][y]=1;
        v[y][x]=1;
    }
    //df-probabil recursiv
    for(i=1;i<=n;i++)
    {
        //cout<<"For OK!\n";
        init(i);
        while(vf!=0)
            df();
    }
    h<<nr;
}