Pagini recente » Profil M@2Te4i | Cod sursa (job #2079757) | Monitorul de evaluare | Istoria paginii utilizator/mumyrevine12 | Cod sursa (job #1683921)
#include <cstring>
#include <iostream>
#include <algorithm>
#include <fstream>
#include <vector>
#include <queue>
std::ifstream f("dfs.in");
std::ofstream g("dfs.out");
#define MAXN 100005
#define g g
int N,M;
std::vector< int > G[MAXN];
std::queue< int > pq;
int viz[MAXN];
int main()
{
f>>N>>M;
for(int i=1; i<=M; i++)
{
int node1, node2;
f>>node1>>node2;
G[node1].push_back(node2);
G[node2].push_back(node1);
}
for (int i = 1; i <= N; ++i)
{
std::cout << i << ": ";
for (int j = 0; j < G[i].size(); ++j)
{
std::cout << G[i][j]<<" ";
}
std::cout << std::endl;
}
std::cout << std::endl;
int cont = 0;
for(int i=1; i<=N; i++)
{
if (viz[i])
{
continue;
}
cont++;
pq.push(i);
while (!pq.empty())
{
int node = pq.front();
pq.pop();
if (viz[node] == 1)
{
continue;
}
viz[node] = 1;
for (int i = 0; i < G[node].size(); ++i)
{
pq.push(G[node][i]);
}
}
}
g<<cont;
return(0);
}