#ifndef COMMON_H /** NB : pour éviter les inclusions multiples de common.h **/
#define COMMON_H /** NB : pour éviter les inclusions multiples de common.h **/

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <assert.h>
#include <stdbool.h>

/* noeud : identifiant entre 0 et N-1 */
typedef int nodeID;

/* représente une ville */
struct node_s {
    char nom[100]; // nom
    float x; // longitude
    float y; // latitude
    int hab; // nombre d'habitants
};

typedef struct node_s node;

/* représente une liaison possible */
struct edge_s {
    nodeID i;
    nodeID j;
    float  d;
    bool selected; // pour l'algorithme de Kruskal (ou Prim)
};

typedef struct edge_s edge;

/* import : lit le fichier filename contenant des descriptions
de villes et alloue dans le tas un tableau de n villes 
NB : n est renvoyé via le pointeur n */
node* lireFichier(const char* filename, int* n);

/* crée l'ensemble des arêtes susceptibles de relier les villes 
les arêtes sont allouées dans le tas. Leur nombre na est 
renvoyé via pointeur */
edge* creerAretes(node* villes, int nv, int* na);

/* export : écrit dant le fichier filename les informations nécessaires 
à l'affichage des arêtes sélectionnées au format geojson */
void exporter(const char* filename, edge* aretes, int na, node* villes, int nv);

#endif /** NB : pour éviter les inclusions multiples de common.h **/