Cod sursa(job #2462391)

Utilizator YetoAdrian Tonica Yeto Data 27 septembrie 2019 11:17:37
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#include <vector>
#include <stack>
using namespace std;
ifstream fin ("dfs.in");
ofstream fout ("dfs.out");
int n, m, x, y, cc[100001], numCC, i;
bool exp[100001];
vector <int> adj[100001];
stack <int> s;

void UCC(int n)
{
    int i=0, x=0;
    numCC=0;
    for (i=1;i<=n;i++) {
        if (!exp[i]) {
            numCC=numCC+1;
            s.push(i);
            while (!s.empty()) {
                x=s.top();
                s.pop();
                cc[x]=numCC;
                if (!exp[x]) {
                    exp[x]=1;
                    for (int j=0;j<adj[x].size();j++) {
                        s.push(adj[x][j]);
                    }
                }
            }
        }
    }
}

void addEdge (vector <int> adj[], int u, int v)
{
    adj[u].push_back(v);
    adj[v].push_back(u);
}

int main () {
    fin>>n>>m;
    for (i=0;i<m;i++) {
        fin>>x>>y;
        addEdge(adj, x, y);
    }
    UCC(n);
    fout<<numCC;
    return 0;
}