Pagini recente » Cod sursa (job #2544955) | Cod sursa (job #325602) | Cod sursa (job #469143) | Cod sursa (job #430585) | Cod sursa (job #2927572)
#include <iostream>
#include <fstream>
#include <vector>
#include <stack>
using namespace std;
ifstream f("dfs.in");
ofstream g("dfs.out");
int main() {
int n,m,x,y,conex=0,nod,ok,j,i;
f>>n>>m;
vector<vector<int>>lista(n+1);
stack<int>stiva;
vector<int>viz(n+1,0);
vector<int>I(n+1,0);
while(f){
f>>x>>y;
lista[x].push_back(y);
lista[y].push_back(x);
}
for(j=1;j<=n;j++)
{
if(viz[j]==0){
stiva.push(j);
viz[j]=1;
conex++;
}
while(!stiva.empty()){
nod=stiva.top();
ok=0;
for(i=I[nod];i<lista[nod].size();i++){
if(viz[lista[nod][i]]==0){
stiva.push(lista[nod][i]);
viz[lista[nod][i]]=1;
ok=1;
I[nod]=i+1;
break;
}
}
if(ok==0){
stiva.pop();
}
}
}
g<<conex;
return 0;
}