Cod sursa(job #2205229)

Utilizator ParketPatrick Josephs Parket Data 18 mai 2018 15:39:20
Problema Parcurgere DFS - componente conexe Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.75 kb
#include <stdio.h>
#include <stdbool.h>
#define N 100001
#define M 200001
int n,vf[2*M], urm[2*M], lst[N], nr, conex;
bool viz[N];
void add(int x, int y){
    nr++;
    vf[nr]=y;
    urm[nr]=lst[x];
    lst[x]=nr;
}
void dfs(int x){
    viz[x]=true;
    int p, y;
    p=lst[x];
    while(p!=0){
        y=vf[p];
        if(!viz[y]){
            dfs(y);
        }
        p=urm[p];

    }
}
int main()
{
    FILE *f1, *f2;
    int n, m, x, y, i;
    f1=fopen("dfs.in","r");
    fscanf(f1,"%d%d",&n,&m);
    for(i=0;i<m;i++){
        fscanf(f1,"%d%d",&x,&y);
        add(x,y);
        add(y,x);
    }
    for(i=1;i<=n;i++)
        if(!viz[i]){
            dfs(i);
            conex++;
        }
    f2=fopen("dfs.out","w");
    fprintf(f2,"%d",conex);
    return 0;
}