Cod sursa(job #1694621)

Utilizator coteanusebastianCoteanu coteanusebastian Data 25 aprilie 2016 18:03:30
Problema Parcurgere DFS - componente conexe Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
using namespace std;
ifstream f("dfs.in");
ofstream g("dfs.out");
int n,m,nrcc=0,u[100097],i;
struct lista
{
    int nod;
    lista *leg;
}*G[200097];
void adaug(int i,int j)
{
    lista *p;
    p=new lista;
    p->nod=j;
    p->leg=G[i];
    G[i]=p;
}
void citire()
{
    int i,j;
    f>>n>>m;
    for(i=1;i<=m;i++)
    {
        f>>i>>j;
        adaug(i,j);
        adaug(j,i);
    }
}
void DFS(int nod)
{
    lista *p;
    u[nod]=1;
    for(p=G[nod];p;p=p->leg) if(!u[p->nod]) DFS(p->nod);
}
int main()
{
    citire();
    for(i=1;i<=n;i++)
    {
        if(!u[i])
        {
            nrcc++;
            DFS(i);
        }
    }
    g<<nrcc<<'\n';
    f.close();
    g.close();
    return 0;
}