Cod sursa(job #1511419)

Utilizator AdrianGotcaAdrian Gotca AdrianGotca Data 26 octombrie 2015 18:51:01
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#include <vector>

using namespace std;

FILE *f=freopen("dfs.in","r",stdin);
FILE *g=freopen("dfs.out","w",stdout);

int k=1;
vector <int> G[100001];
int n,m,nod,c[100001];
int viz[100001];
void read();
void DFS(int);
void write();
int main(){
    read();
    write();
    return 0;
}

void read(){
    int x=0,y=0;
    scanf("%d%d",&n,&m);
    for (int i=1;i<=m;i++){
        scanf("%d%d",&x,&y);
        G[x].push_back(y);
        G[y].push_back(x);
    }
    for (int i=1;i<=n;i++){
        if (!viz[i]){
            k++;
            DFS(i);
        }
    }
}

void DFS(int x){
    int i=0;
    viz[x]=k;
    for (i=0;i<G[x].size();i++){
        int y=G[x][i];
        if (!viz[y]){
            DFS(y);
        }
    }
}

void write(){
    printf("%d",k-1);
}