#include #include #include long n_ver; double p_arc; long n_arc; long n_criado; long completo; void main( int argc, char *argv[]) { FILE *fd; int i, j, x; int custo; if( argc != 4 ) { printf("geratxt \n"); exit(1); } n_ver = atol( argv[2] ); p_arc = atof( argv[3] ); if( n_ver < 3 || n_ver > 1000 ) { printf("Numero de vertices %ld invalido\n", n_ver); exit(1); } if( p_arc < 1.0 || p_arc > 100.0 ) { printf("Percentual de arcos %lf invalido\n", p_arc); exit(1); } fd = fopen( argv[1], "w"); if( fd == NULL ) { printf("Nao conseguiu abrir o arquivo <%s>\n", argv[1]); exit(1); } n_arc = (long)( (n_ver * (n_ver - 1)) * (p_arc / 100.0) ); completo = n_ver * (n_ver - 1); printf("Vai criar com %ld vertices e aproximadamente %ld arcos\n", n_ver, n_arc); for( i=0; i < n_ver; ++i) for( j=0; j < n_ver; ++j) if( i != j ) { x = rand(); if( x <= (p_arc / 100.0) * RAND_MAX ) { custo = 1 + ( rand() / 1000 ); fprintf( fd, "%d,%d,%d\n", i+1, j+1, custo); ++n_criado; } } fclose( fd); printf("Criado com %ld vertices e %ld arcos, percentual %lf\n", n_ver, n_criado, 1.0*n_criado/completo); }