Cod sursa(job #2888803)

Utilizator anamaria140402Balacescu Anamaria anamaria140402 Data 11 aprilie 2022 20:46:05
Problema Parcurgere DFS - componente conexe Scor 0
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.24 kb
#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;
}