Cod sursa(job #1459493)

Utilizator remus.ionitaIonita Remus remus.ionita Data 10 iulie 2015 00:45:41
Problema Algoritmul lui Dijkstra Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 1 kb
# include <stdio.h>
# include <stdlib.h>
# define datain "dijkstra.in"
# define dataout "dijkstra.out"
typedef struct graf {
	unsigned int n;
	long m;
	int **a;
	} GRAF;
void initG (GRAF **g, int n, int m) {
	int i = 1;
	(*g)->n = n;
	(*g)->m = m;
	(*g)->a = (int **) malloc ( (n+1) * sizeof (int*));
	for (i = 0; i <= n; i++)
		(*g)->a[i] = (int*) calloc ( (n+1) , sizeof (int));
}
void readG (GRAF **g) {
	unsigned int n = 0, x = 0, y = 0, z = 0;
	long m = 0, i = 0;
	FILE *f = fopen (datain, "rt");
	char *line = (char *) malloc (20 * sizeof (char));
	fgets (line, 20, f);
	sscanf (line, "%u%ld", &n, &m);
	initG (g, n, m);
	for (i = 0; i < m; i++) {
		fgets (line, 20 ,f);
		sscanf (line, "%u%u%d", &x, &y, &z);
		(*g)->a[x][y] = z;
	}
	free (line);
	fclose (f);
}
void printG (GRAF *g) {
	int i = 0, j = 0;
	for (i = 1; i <= g->n; i++) {
		for (j = 1; j <= g->n; j++)
			printf ("%d ", g->a[i][j]);
		printf ("\n");
	}
}
int main (void) {

	GRAF *g = (GRAF *) malloc (sizeof (GRAF));
	readG (&g);
	printG (g);
	return 0;
}