#include #include #include #include using namespace std; void ecritureTailles(int n, int m, int comp[]); void composantes(int n, int m, int edge[][2], int comp[]); void grapheRandom(int,int, int[][2]); void printgraphe (int, int, int[][2]); void ecritureTaillesbis(int n, int m, int comp[]); int main(int argc, char ** argv) { int n; // Nombre de sommets. int m; // Nombre d'aretes. cout << "Entrer le nombre de sommets:"; cin >> n; cout << "Entrer le nombre d'aretes:"; cin >> m; int edge[m][2]; // Tableau des aretes. int comp[n]; // comp[i] est le numero de la composante contenant i. grapheRandom(n,m,edge); //printgraphe(n,m,edge); composantes(n,m,edge,comp); cout<=1){ cout<<"Il y a "<< tab[i] << " composantes de taille "<< i+1 << " Sommets, le num de cette comp est : "<< comp[i]< L[n]; for (int i = 0 ; i < n; i ++) { comp[i]=i; taille[i]=1; L[i].push_back(i); } for ( int i = 0 ; i < m; i ++){ int * x = &comp[edge[i][0]]; int * y = &comp[edge[i][1]]; if (*x != *y){ if (*x>*y){ int aux = *x; taille[*y]+=taille[aux]; for(int j = 0; j < taille[aux]; j ++){ int tmp = L[aux].back(); comp[tmp]=*y; L[*y].push_back(tmp); L[aux].pop_back(); } } } } } void printgraphe (int n, int m, int edge[][2]){ cout<