Pagini recente » Cod sursa (job #2688709) | Cod sursa (job #2333276) | Cod sursa (job #2608642) | Cod sursa (job #1201608) | Cod sursa (job #2831989)
#include <bits/stdc++.h>
using namespace std;
const int N= 100010;
class Graf
{
private:
int noduri , muchii;
void dfs(int start,vector<int> v[N], vector<int> &viz);
public:
Graf(int,int);
void add_edge(int x, int y);
int nr_connected_components(vector<int> v[N], vector<int> viz);
};
Graf::Graf(int n, int m)
{
(*this).noduri = n;
(*this).muchii = m;
cout<<"Constructor " << n<<" "<<m<<'\n';
}
void Graf::dfs(int start, vector<int> v[N], vector<int> &viz)
{
viz[start] = 1;
for(auto it : v[start])
if(!viz[it])
dfs(it,v,viz);
}
int Graf::nr_connected_components(vector<int> v[N], vector<int> viz) {
int ct=0;
for(int i=1;i<=(this->noduri);i++)
if(!viz[i]){
dfs(i,v,viz);
ct++;
}
return ct;
}
int main()
{
int problema = 1;
if(problema == 1)
{
ifstream fin("dfs.in");
ofstream fout("dfs.out");
int n,m;
fin>>n>>m;
vector<int> adj[n+5] = {};
vector<int> viz(n+5,0);
for(auto it:viz)
cout<<it<<" ";
cout<<'\n';
for(int i=1;i<=m;i++)
{
int x,y;
fin>>x>>y;
adj[x].push_back(y);
adj[y].push_back(x);
}
for(int i=1;i<=n;i++)
if(adj[i].size())
{
cout<<i<<" : ";
for(auto it : adj[i])
cout<<it<<" ";
cout<<'\n';
}
cout<<"-----------------\n\n";
Graf G (n,m);
fout<<G.nr_connected_components(adj,viz);
}
}