#include #include typedef unsigned int bool; typedef int sommet; #define N 30000 #define A 64000 typedef bool gr1[N][N]; typedef struct maillon maillon, *liste; struct maillon {sommet s; liste suiv;}; typedef liste gr2[N]; typedef struct{sommet ori,ext;} arc, gr3[A]; typedef int ts3[N+A]; void affgr1(gr1 g1) { int i,j; for(i=0;i%d ",i,j); printf("\n"); } void affgr3(gr3 g3) { int k; for(k=0;k%d ",g3[k].ori,g3[k].ext); printf("\n"); } void gr1gr3(gr1 g1,gr3 g3) { int i,j,k=0; for(i=0;i=0;d=suiv[d]) for(i2=(s+d)%N;i2<2*N;i2+=N) if(1&~i2) if(i=i2/2, j=(s-i+N)%N, i*j%N==ij) if(k++=0;k=suiv[k]) if(cc[j=g3[k].ext]<0) cc[pile[ip++]=j]=nbc; return nbc+1; } int main() { gr3 g3; int cc[N], i ,j; set1gr3(g3); //affgr3(g3); set2gr3(g3); //affgr3(g3); //{gr1 g1; gr3gr1(g3,g1); affgr1(g1);} printf("Il y a %d composantes connexes.\nLa composante de 1 contient :",nbcc(g3,cc)); for(i=j=0;i