/**
 *  This program is free software: you can redistribute it and/or
 *  modify it under the terms of the GNU General Public License as
 *  published by the Free Software Foundation, either version 3 of the
 *  License, or (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see
 *  .
 *
 *  (c) Vincenzo Nicosia 2009-2017 -- 
 * 
 *  This file is part of NetBunch, a package for complex network
 *  analysis and modelling. For more information please visit:
 *
 *             http://www.complex-networks.net/
 *
 *  If you use this software, please add a reference to 
 *
 *               V. Latora, V. Nicosia, G. Russo             
 *   "Complex Networks: Principles, Methods and Applications"
 *              Cambridge University Press (2017) 
 *                ISBN: 9781107103184
 *
 ***********************************************************************
 *
 *  Compute and print the basic properties of the undirected graph on
 *  input, i.e., the number of nodes, the number of edges, and the
 *  first two uncentered moments of the degree sequence ( and
 *  ).
 * 
 */
#include 
#include 
#include 
#include "utils.h"
void usage(char *argv[]){
    printf("********************************************************************\n"
         "**                                                                **\n"
         "**                        -*- graph_info -*-                      **\n"
         "**                                                                **\n"
         "**  Compute basic information about the 'graph_in', namely the    **\n"
         "**  number of nodes, number of edges, average degree, and the     **\n"
         "**  average squared degree.                                        **\n"
         "**                                                                **\n"
         "**   The input file 'graph_in' is an edge-list:                   **\n"
         "**                                                                **\n"
         "**                            I_1 J_1                             **\n"
         "**                            I_2 J_2                             **\n"
         "**                            I_3 J_3                             **\n"
         "**                            ... ...                             **\n"
         "**                            I_K J_K                             **\n"
         "**                                                                **\n"
         "**    If 'graph_in' is equal to '-' (dash), read the file from    **\n" 
         "**    the standard input (STDIN).                                 **\n"
         "**                                                                **\n"
         "**    The output is a single line containing in the format:       **\n"
         "**                                                                **\n"
         "**       N K avg_k avg_k2                                         **\n"
         "**                                                                **\n"
         "**    where 'N' is the number of nodes, 'K' is the number of      **\n"
         "**    edges, 'avg_k' is the average degree, and 'avg_k2' is the   **\n"
         "**    average of the squared degree.                              **\n"
         "**                                                                **\n"
         "********************************************************************\n"
         " This is Free Software - You can use and distribute it under \n"
         " the terms of the GNU General Public License, version 3 or later\n\n"
         " Please visit http://www.complex-networks.net for more information\n\n"
         " (c) Vincenzo Nicosia 2009-2017 (v.nicosia@qmul.ac.uk)\n"
         "********************************************************************\n\n"
         );
  printf("Usage: %s \n", argv[0]);
}
double ksquare_mean(unsigned int N, unsigned int *r_slap){
  
  double sum = 0;
  unsigned int i;
  unsigned int k;
  for(i=0; i