vecteur de gamme/ contrôle de portée

nouvel utilisateur ici.
J'ai écrit ce code qui crée un réseau avec des nœuds et utilise un nombre aléatoire pour créer des bords entre eux. - Je garder la trace de tout le graphe comme un vecteur, chaque entrée étant un vecteur représentant un nœud dont les éléments sont ses voisins. Il utilise ensuite une profondeur d'abord de recherche pour trouver le nombre de composants, qui sont découpés en plusieurs parties sur le graphique (ma variable count). Ensuite, j'ai sortie le nœud et le nombre de voisins, il est connecté dans un fichier txt. Le code compile, mais l'invite de commande me donne une erreur:

résilier appelé après avoir jeté une instance de 'std::out_of_range'
quel (le): vector::_M_range_check

Cette application a demandé l'Exécution d'y mettre fin d'une manière inhabituelle.
Veuillez contacter le support...

Donc... qu'est-ce que cela signifie et comment puis-je résoudre ce problème?

Aussi, j'ai besoin de garder une trace du nombre de nœuds dans chaque composante, des idées?

Merci d'avance, voici mon code:

#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <vector>
using namespace std;
void gengraph(int v, float p, vector <vector <int> >& G);
void DFS(vector <vector <int> > G, int v, vector<int>& M);
int main()
{
int a = 1000;
float b = 0.004;
vector <vector <int> > G;
gengraph(a,b,G);
vector <int> M (1000);
int count = 0;
int i;
for (i = 0; i < a; i++)
{
if (M[i]==0)
{
DFS(G, i, M);
count += 1;
}
}
ofstream myfile;
myfile.open ("data.txt");
for (int l=0; l<1000; l++)
{
myfile << "v   len(G[v])\n";
}
myfile.close();
}
void gengraph(int v, float p, vector <vector <int> >& G)
{
for (int i = 0; i<1000; i++)
{  
for (int j = 0; j<1000; j++)
{
int y = rand();
bool Prob = (y <= p);
if (i == j)
continue;
else
{
if(Prob == true)
{
G.at(i).push_back (j);
G.at(j).push_back (i);
}
}
}
}
}
void DFS(vector <vector <int> >& G, int v, vector<int>& M)
{
M[v]=1;
for(unsigned int j = 0; j < G[v].size(); j++)
{
if (M[j]==0)
{
DFS(G, j, M);
}
}
}

OriginalL'auteur Ashton Wiens | 2013-02-26