Pagini recente » Cod sursa (job #3220696) | Cod sursa (job #1865299) | Cod sursa (job #2505926) | Cod sursa (job #3291124) | Cod sursa (job #2888803)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void dfs_matrix(int** graph, int n, int currentNode, int* visited)
{
//cod din curs
visited[currentNode] = 1;
//printf("%d ", currentNode);
//printf("%d ", currentNode);
for (int i = 0; i < n; i++)
{
if (!visited[i] && graph[currentNode][i] == 1)
{
dfs_matrix(graph, n, i, visited);
}
}
}
int main()
{
//EDGES
FILE* f = fopen("dfs.in", "r");
if (f == NULL)
return ;
//TODO
int n = 0;
fscanf(f, "%d", &n);
int m = 0;
fscanf(f, "%d", &m);
int** adjacencyMatrix = NULL;
adjacencyMatrix = (int**)calloc(n , sizeof(int*));
for (int i = 0; i < n; i++)
{
adjacencyMatrix[i] = (int*)calloc(n, sizeof(int));
}
for (int i = 0; i < m; i++)
{
int n1, n2;
fscanf(f, "%d %d", &n1, &n2);
adjacencyMatrix[n1][n2] = 1;
adjacencyMatrix[n2][n1] = 1;
}
fclose(f);
int visited2[100] = { 0 }; //we assume fewer than 100 nodes
int poz = 0;
int ok = 0;
int nrconex = 0;
for(int i = 0; i < n; i++)
if (!visited2[i])
{
nrconex++;
dfs_matrix(adjacencyMatrix, n, i, visited2);
}
FILE* g = fopen("dfs.out", "w");
fprintf(g, "%d", nrconex);
fclose(g);
return 0;
}