Skip to content
Snippets Groups Projects
Select Git revision
  • 348f3ab0ecf7c4e8a41bb33e85ac27ecc98baa15
  • master default protected
2 results

lire.c

Blame
  • user avatar
    stephgc authored
    6eb6360d
    History
    lire.c 1.15 KiB
    /*
     *  lire.c
     *  graphes
     *
     *  Created by Stéphane on 12/02/18.
     *  Copyright 2018 __MyCompanyName__. All rights reserved.
     *
     */
    
    #include <assert.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    #include "graph.h"
    #include "lists.h"
    #include "lire.h"
    #include "main.h"
    
    
    /*
     SECTION Graph
     Nodes 6405
     Edges 10454
     E 1 2 5
     ...
    */
    
    
    int countGraphe(FILE *f)
    {
        int nb_sommets, nb_aretes;
    
        fscanf(f, "%*s%*s%d%d", &nb_sommets, &nb_aretes);
    
        return nb_sommets;
    }
    
    
    Graph lireGraphe(FILE *f)
    {
        int s1, s2;
        int nb_sommets, nb_aretes, nba;
        LIST *adj;
    
        //fscanf(f, "%",&s1, &s2)
        fscanf(f, "%*s%*s%d%d", &nb_sommets, &nb_aretes);
    
        int *nadj = calloc(nb_sommets, sizeof(int));
    
        adj = calloc(nb_sommets, sizeof(LIST));
        assert(adj != NULL);
    
        nba = nb_aretes;
        while (1) {
            if (fscanf(f, "%d%d",&s1, &s2) != 2)
                break;
            s1 --; s2 --;
            adj[s2] = newLNode( s1, adj[s2], 1);
            adj[s1] = newLNode( s2, adj[s1], 1);
    
            nadj[s1] ++;
            nadj[s2] ++;
    
            nba --;
        }
    
        //assert(nba == 0);
    
        Graph g = newGraph(nb_sommets, nb_aretes, adj, nadj);
    
        return g;
    }