Cod sursa(job #3197684)

Utilizator NRGrbStoica Robert NRGrb Data 27 ianuarie 2024 11:48:52
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <fstream>
#include <vector>

using namespace std;
ifstream fin("dfs.in");
ofstream fout("dfs.out");

bool viz[100005];

vector<vector<int>>graf;

void DFS(int nod){
    viz[nod]=true;
    for(int vec:graf[nod]){
        if(!viz[vec]){
            DFS(vec);
        }
    }
}

int n, m, start;

struct noduri{
    int nod1, nod2;
}muchii[200005];

int main()
{   fin>>n>>m;
    graf.resize(n+1);
    viz[start]=true;
    for(int i=0; i<m; i++){
        fin>>muchii[i].nod1>>muchii[i].nod2;
    }
    for(int i=0; i<m-1; i++)
        for(int j=i+1; j<m; j++)
            if(muchii[i].nod1 > muchii[j].nod1){
                noduri aux=muchii[i];
                muchii[i]=muchii[j];
                muchii[j]=aux;
            }
    for(int i=0; i<m; i++){
        graf[muchii[i].nod1].push_back(muchii[i].nod2);
        graf[muchii[i].nod2].push_back(muchii[i].nod1);
    }

    start=1;
    int cnt=1;
    for(int vec:graf[start]){
        if(!viz[vec])
            DFS(vec);
        cnt++;
    }
    fout<<cnt;

    return 0;
}