Mai intai trebuie sa te autentifici.
Cod sursa(job #2927572)
| Utilizator | Data | 20 octombrie 2022 21:15:56 | |
|---|---|---|---|
| Problema | Parcurgere DFS - componente conexe | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 1.01 kb |
#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;
}
