Pagini recente » Diferente pentru problema/sume2 intre reviziile 7 si 4 | Diferente pentru problema/verlab intre reviziile 29 si 30 | Monitorul de evaluare | Cod sursa (job #1797473) | Cod sursa (job #2465956)
#include <fstream>
#include <vector>
#include <bitset>
#define ARR_MAX 100005
using namespace std;
ifstream fin("dfs.in");
ofstream fout("dfs.out");
int V, m, x, y, connected, urm;
vector<int> adj[ARR_MAX];
vector<int> Result;
bitset<ARR_MAX> visited;
void ReadGraph()
{
fin >> V >> m;
for(int i = 0; i < m; i++) {
fin >> x >> y;
adj[x].push_back(y);
adj[y].push_back(x);
}
}
void DFS(int v)
{
visited[v] = 1;
for(unsigned i = 0; i < adj[v].size(); i++) {
urm = adj[v][i];
if(!visited[urm])
DFS(urm);
}
}
void Write()
{
for(int i = 1; i <= V; i++){
if(!visited[i])
connected++;
DFS(i);
}
fout << connected;
}
int main()
{
ReadGraph();
Write();
}