void solve() { int i,j,k,change; char s[MAXV+1]; scanf("%d",&n); if(n>MAXV) printf("increase MAXV to %d and recompile\n",n),exit(1); for(ne=i=0;i<n;i++) { scanf("%s",s); for(j=0;j<n;j++) if(j!=i && s[j]=='1') from[ne]=i,to[ne++]=j; } countingsort(); n2=scc(); /* find component graph */ for(i=0;i<n;i++) for(j=0;j<n;j++) g2[i][j]=0; for(i=0;i<ne;i++) g2[con[to[i]]][con[from[i]]]=1; /* turn it into a tree by un-transitivizing it */ do { change=0; for(k=0;k<n2;k++) for(i=0;i<n2;i++) if(k!=i && g2[i][k]) for(j=0;j<n2;j++) if(k!=j && i!=j) { if(g2[i][j] && g2[i][k] && g2[k][j]) g2[i][j]=0,change=1; } } while(change); /* find representative */ for(i=0;i<n;i++) rep[con[i]]=i; /* output tree edges */ for(on=i=0;i<n2;i++) for(j=0;j<n2;j++) if(i!=j && g2[i][j]) outa[on]=rep[i]+1,outb[on++]=rep[j]+1; /* output cycle in each component */ for(i=0;i<n2;i++) { for(cn=j=0;j<n;j++) if(i==con[j]) sykkel[cn++]=j; if(cn>1) for(j=0;j<cn;j++) outa[on]=sykkel[j]+1,outb[on++]=sykkel[(j+1)%cn]+1; } printf("%d\n",on); for(i=0;i<on;i++) printf("%d %d\n",outa[i],outb[i]); }
/************************************************** * Test sort by keefo 2008.03.16 **************************************************/ int main(int argc, char* argv[]) { int a[10] = {2, 3, 1, 5, 8, 7, 6}; quicksort(a, 0, 6); mergesort(a, 0, 6); countingsort(a, 7); getchar(); return 0; }
int main(int argc, char const* argv[]) { int *temp; for(int i = 1; i <= 71; i += 5){ temp = getRandomArray(i, -20, 20); printarray(temp, i); countingsort(temp, i); printarray(temp, i); delete [] temp; } return 0; }
/* for vertex i, id of component is in con[i] */ int scc() { static int dfsres[MAXV]; int i,t,c=0; memset(vis,0,n); for(resn=i=0;i<n;i++) if(!vis[i]) dfsvisit(i,-1); /* transpose graph */ memcpy(dfsres,res,n*sizeof(int)); for(i=0;i<ne;i++) t=from[i],from[i]=to[i],to[i]=t; countingsort(); memset(vis,0,n); for(resn=0,i=n-1;i>=0;i--) if(!vis[dfsres[i]]) dfsvisit(dfsres[i],c++); return c; }
int main() { int i; static char s[MAXS+3]; while(1) { fgets(s,MAXS,stdin); sscanf(s,"%d",&n); if(!n) break; memset(g,0,sizeof(g)); ne=0; while(1) { fgets(s,MAXS,stdin); an=sscanf(s,"%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", &a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6],&a[7],&a[8],&a[9], &a[10],&a[11],&a[12],&a[13],&a[14],&a[15],&a[16],&a[17],&a[18],&a[19], &a[20],&a[21],&a[22],&a[23],&a[24],&a[25],&a[26],&a[27],&a[28],&a[29], &a[30],&a[31],&a[32],&a[33],&a[34],&a[35],&a[36],&a[37],&a[38],&a[39], &a[40],&a[41],&a[42],&a[43],&a[44],&a[45],&a[46],&a[47],&a[48],&a[49], &a[50],&a[51],&a[52],&a[53],&a[54],&a[55],&a[56],&a[57],&a[58],&a[59], &a[60],&a[61],&a[62],&a[63],&a[64],&a[65],&a[66],&a[67],&a[68],&a[69], &a[70],&a[71],&a[72],&a[73],&a[74],&a[75],&a[76],&a[77],&a[78],&a[79], &a[80],&a[81],&a[82],&a[83],&a[84],&a[85],&a[86],&a[87],&a[88],&a[89], &a[90],&a[91],&a[92],&a[93],&a[94],&a[95],&a[96],&a[97],&a[98],&a[99], &a[100],&a[101],&a[102],&a[103],&a[104],&a[105],&a[106],&a[107],&a[108],&a[109]); if(an==1 && !a[0]) break; a[0]--; for(i=1;i<an;i++) { a[i]--; if(!g[a[0]][a[i]]) { g[a[0]][a[i]]=g[a[i]][a[0]]=1; from[ne]=a[0]; to[ne++]=a[i]; from[ne]=a[i]; to[ne++]=a[0]; } } } countingsort(); articulation(0); printf("%d\n",acn); } return 0; }
int main() { int size,i,max=-10; printf("enter the size of array\n"); scanf("%d",&size); int numbers[size]; int extra[size]; for (i = 0; i < size; ++i) { scanf("%d",&numbers[i]); if(numbers[i]>max) max = numbers[i]; } printf("max is %d\n",max); countingsort(numbers,extra,max,size); for (i = 0; i < size; ++i) { printf("%d ",extra[i]); } return 0; }
int main(){ int ar[5] = {1,0,0,0,2}; int size = sizeof(ar)/sizeof(ar[0]); countingsort(ar,size); return 0; }