Cod sursa(job #2442735)

Utilizator lukapopoviciNUme Fals lukapopovici Data 25 iulie 2019 01:35:33
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.31 kb
#include <iostream>
#include<vector>
#include<queue>
#include<fstream>
#include <algorithm>    // std::sort
#include<stack>
using namespace std;
ifstream in("dfs.in");
ofstream out("dfs.out");
struct graph
{
    std::vector<int> q;
    bool viz;
    int vec;
};
graph GRAF[200000];
void citire(int n)
{
    int i=1,a=0,b=0;
    for(i=1; i<=n; i++)
    {
        in>>a>>b;
        GRAF[a].q.push_back(b);
    }

}
void siguranta(int n)
{
    int i=1;
    for(i; i<=n; i++)
          std::sort (GRAF[i].q.begin(),GRAF[i].q.end());
}
void BFS(int n)
{
    int c=0;
    //rez.push(n);
    stack<int> p;
    GRAF[n].viz=1;
    p.push(n);
    while(!p.empty())
    {
        int x=p.top();
        p.pop();
        int len=GRAF[x].q.size()-1;
        for(int i=0; i<=len; i++)
        {
            if(GRAF[GRAF[x].q[i]].viz==0)
            {
              GRAF[GRAF[x].q[i]].viz=1;
               // p.push(GRAF[x].q[i]);
                BFS(GRAF[x].q[i]);
                c++;
            }
         }
    }
    GRAF[n].vec=c;
}
    int main()
    {
        int rez=0,n,o,m;
        in>>o>>n;
        citire(n);
        siguranta(n);
       for(int i=1;i<=n;i++)
        BFS(i);
    for(int i=1;i<=n;i++)
        if(GRAF[n].vec!=0)
            rez++;
    out<<rez;
    }