Pagini recente » Cod sursa (job #577314) | Cod sursa (job #263549) | Cod sursa (job #2045824) | Cod sursa (job #1316518) | Cod sursa (job #2227454)
#include <cstdio>
#include <vector>
int vertices, edges, u, v, conexParts;
std :: vector<int> adj[100001]; bool visited[100001];
void DFS(int current)
{
visited[current] = true;
for(int child : adj[current])
{
if(!visited[child]) DFS(child);
}
}
char buffer[20000000]; int p = -1;
__attribute__((always_inline)) int get_int()
{
int number = 0;
for(++p; buffer[p] > 47; ++p)
{
number = number * 10 + buffer[p] - 48;
}
return number;
}
int main()
{
freopen("dfs.in", "r", stdin);
freopen("dfs.out", "w", stdout);
fread(buffer, 1, 20000000, stdin)
vertices = get_int(), edges = get_int();
for(int i = edges; i; --i)
{
u = get_int(), v = get_int();
adj[u].push_back(v);
adj[v].push_back(u);
}
for(int i = vertices; i; --i)
{
if(!visited[i])
{
DFS(i);
++conexParts;
}
}
printf("%d", conexParts);
return 0;
}