Pagini recente » Cod sursa (job #2101004) | Cod sursa (job #436111) | Cod sursa (job #320774) | Cod sursa (job #1096405) | Cod sursa (job #2905217)
#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);
}