Pagini recente » Cod sursa (job #3335448) | Cod sursa (job #3329904) | Borderou de evaluare (job #1250578) | Monitorul de evaluare | Cod sursa (job #3345874)
#include <iostream>
#include <fstream>
#include <stack>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("dfs.in");
ofstream fout("dfs.out");
const int maxSz=100005;
bool visited[maxSz];
vector<int> adj[maxSz];
int main()
{
int n,m;
fin>>n>>m;
stack<int> s;
int count=0;
int x,y,node;
for(int i=0;i<m;++i)
{
fin>>x>>y;
adj[x].push_back(y);
adj[y].push_back(x);
}
for(int i=1;i<=n;++i)
{
if(!visited[i])
{
++count;
s.push(i);
visited[i]=1;
while(!s.empty())
{
node=s.top();
s.pop();
for(auto el : adj[node])
{
if(!visited[el])
{
s.push(el);
visited[el]=1;
}
}
}
}
}
fout<<count;
return 0;
}