Pagini recente » Cod sursa (job #3357470) | Cod sursa (job #3357468) | Cod sursa (job #2373204) | Cod sursa (job #2423672) | Cod sursa (job #2442735)
#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;
}