Pagini recente » Cod sursa (job #1997447) | Cod sursa (job #1340133) | Cod sursa (job #1662259) | Cod sursa (job #2466168) | Cod sursa (job #932324)
Cod sursa(job #932324)
#include <iostream>
#include <fstream>
#include <vector>
#include <deque>
#include <set>
using namespace std;
ifstream in("dfs.in");
ofstream out("dfs.out");
int n,m;
struct nod
{
vector<int> v;
} a[100010];
int main()
{
in >> n >> m;
for (int i = 0; i < m; ++i)
{
int x,y; in >> x >> y;
a[x].v.push_back(y);
a[y].v.push_back(x);
}
set<int> noduri;
for (int i = 1; i <= n; ++i)
noduri.insert(i);
deque<int> ndeviz;
int k = 0;
while (noduri.size())
{
if (!ndeviz.size()){ ++k; ndeviz.push_back( *(noduri.begin()) ); }
int nod = ndeviz.front();
// cout << ndeviz.size() << " " << nod << '\n';
ndeviz.pop_front();
if (noduri.find(nod) != noduri.end()) noduri.erase( noduri.find(nod) );
for (int i = 0; i < a[nod].v.size(); ++i)
if( noduri.find(a[nod].v[i]) != noduri.end() ) ndeviz.push_back(a[nod].v[i]);
}
out << k;
return 0;
}