Pagini recente » Cod sursa (job #1844870) | Cod sursa (job #1898536) | Cod sursa (job #1475403) | Cod sursa (job #1641885) | Cod sursa (job #1564533)
#include <vector>
#include <cstdio>
#include <bitset>
using namespace std;
FILE * iFile;
FILE * oFile;
vector<int> vertices[100002];
bitset<100002> visited;
int nodes, edges, answer;
void read()
{
int source, destination;
fscanf(iFile, "%d%d", &nodes, &edges);
for(int i = 1; i <= edges; i++)
{
fscanf(iFile, "%d %d", &source, &destination);
vertices[source].push_back(destination);
vertices[destination].push_back(source);
}
}
void dfs(int start_node)
{
int i;
visited[start_node] = 1;
for(i=0;i<vertices[start_node].size();i++)
{
if(visited[vertices[start_node][i]] == 0)
{
dfs(vertices[start_node][i]);
}
}
}
int main()
{
iFile = fopen("dfs.in", "r");
oFile = fopen("dfs.out", "w");
read();
for(int i=1;i<=nodes;i++)
{
if(visited[i] == 0)
{
answer++;
dfs(i);
}
}
fprintf(oFile, "%d", answer);
return 0;
}