Pagini recente » Cod sursa (job #2491) | Cod sursa (job #1961572) | Cod sursa (job #104567) | Cod sursa (job #2357366) | Cod sursa (job #2793591)
#include<bits/stdc++.h>
using namespace std;
ifstream in("dfs.in");
ofstream out("dfs.out");
const int nmax = 100001;
class Graf{
int n, m;
vector<int> vecin[nmax];
void recursieDFS(int nod, bool vizitat[]){
vizitat[nod]=true;
for(int i=0; i<vecin[nod].size(); ++i)
if(vizitat[vecin[nod][i]]==false)
recursieDFS(vecin[nod][i], vizitat);
};
public:
Graf(int n, int m){
this->n=n;
this->m=m;
}
void citireM( int m, bool orient ){
for( int i=0; i<m; ++i ){
int a, b; in >> a >> b;
vecin[a].push_back(b);
if( orient == false ) vecin[b].push_back(a);
}
}
void DFS(){
int nr_comp_conex=0;
bool vizitat[n];
for(int i=1;i<=n;++i)
vizitat[i]=false;
for(int i=1;i<=n;++i){
if(vizitat[i]==false){
recursieDFS(i,vizitat);
nr_comp_conex++;
}
}
out<<nr_comp_conex;
}
void BFS(int s){
int drum[n+1];
for(int i=1;i<=n;++i)
drum[i]=-1;
drum[s]=0;
queue <int> poz;
poz.push(s);
while(!poz.empty()){
int nod=poz.front();
for(int i=0; i<vecin[nod].size(); ++i){
if( drum[vecin[nod][i]] == -1 ){
poz.push( vecin[nod][i] );
drum[vecin[nod][i]]=drum[nod]+1;
}
}
poz.pop();
}
for(int i=1;i<=n;++i)
out<<drum[i]<<" ";
}
};
int main()
{
int n,m,s;
in>>n>>m;
Graf g(n,m);
g.citireM(m,false);
g.DFS();
return 0;
}