Pagini recente » Cod sursa (job #1075092) | Cod sursa (job #1028129) | Cod sursa (job #1547355) | Cod sursa (job #2051484) | Cod sursa (job #1683920)
#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++)
{
std :: cout<<viz[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]);
}
}
}
std::cout << cont << std::endl;
return(0);
}