Cod sursa(job #2905220)

Utilizator bogdancprCaprita Bogdan bogdancpr Data 20 mai 2022 13:29:35
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


//EDGES
typedef struct edge {
	int leftNode;
	int rightNode;
} edge;

typedef struct graphEdges {
	edge* edges;
	int numNodes;
	int numEdges;
} graphEdges;

void dfs_edges(FILE* g , graphEdges graph , int currentNode, int* visited)
{
	visited[currentNode] = 1;
	fprintf(g,"%d ", currentNode);
	for (int i = 0; i < graph.numEdges; i++)
	{
		if (graph.edges[i].leftNode == currentNode)
		{
			if (visited[graph.edges[i].rightNode] == 0)
			{
				visited[graph.edges[i].rightNode] = 1;
				dfs_edges(g,graph, graph.edges[i].rightNode, visited);
			}
		}
	}

}

int main(int argc, char* argv[])
{
	FILE* f = fopen(argv[1], "r");
	FILE* g = fopen(argv[2], "w");
	int S;
	graphEdges graph;
	fscanf(f,"%d %d %d", &graph.numNodes, &graph.numEdges, &S);
	graph.edges = (edge*)malloc(graph.numEdges * sizeof(edge));
	for (int i = 0; i < graph.numEdges; i++)
	{
		fscanf(f, "%d %d", &(graph.edges[i].leftNode), &(graph.edges[i].rightNode));
	}
	int* visited = (int*)calloc(graph.numNodes, sizeof(int));
	dfs_edges(g,graph, S, visited);
}