Cod sursa(job #1362586)

Utilizator ZeBuGgErCasapu Andreas ZeBuGgEr Data 26 februarie 2015 13:49:06
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<stdio.h>
#include<list>

int visited[100001];

std::list<int> *l;

void dfs(int pos,int from)
{
    visited[pos]=1;
    if(from!=-1)
    {
        l[from].pop_back();
    }
    while(!l[pos].empty())
    {
        dfs(l[pos].back(),pos);
    }
}

int main()
{
    FILE *fin,*fout;
    fin=fopen("dfs.in","r");
    fout=fopen("dfs.out","w");

    int n,m,t1,t2,c=0;
    fscanf(fin,"%d %d",&n,&m);

    l=new std::list<int>[n+1];

    for(int i=1;i<=m;i++)
    {
        fscanf(fin,"%d %d",&t1,&t2);
        l[t1].push_front(t2);
        l[t2].push_front(t1);
    }
    for(int i=1;i<=n;i++)
    {
        if(visited[i]==0)
        {
            dfs(i,-1);
            c++;
        }
    }
    fprintf(fout,"%d",c);
}