fork download
  1. #include <stdio.h>
  2.  
  3. int main(void) {
  4.  
  5. printf("Enter the number of states : ");
  6. int n;
  7. scanf("%d",&n);
  8. int set1[n],set2[n],f,q[n][2];//for Equivalents
  9. for(int i=0;i<n;i++){
  10. printf("\nq[%d][0] = ",i);
  11. scanf("%d",&q[i][0]);
  12. printf("\nq[%d][1] = ",i);
  13. scanf("%d",&q[i][1]);
  14. }
  15. printf("\n\nEnter the number of Final states : ");
  16. scanf("%d",&f);
  17. int final[f];
  18. for(int i=0;i<f;i++){
  19. printf("\nFinal States : ");
  20. scanf("%d",&final[i]);
  21. }
  22.  
  23. /*for(int r=0;r<n;r++){
  24. printf("\nq[%d][0]=%d",r,q[r][0]);
  25. printf("\nq[%d][1]=%d",r,q[r][1]);
  26. }*/
  27.  
  28. int flag=0,temp[n],t=0,cont=0;
  29. for(int i=0;i<n;i++){
  30. flag=0;
  31. cont=0;
  32. for(int k=0; k<n;k++){
  33. if(i==temp[k]){
  34. cont=1;
  35. }
  36. }
  37. if(cont==1){
  38. continue;
  39. }
  40. for(int j=0;j<n;j++){
  41. if(i==q[j][0] || i==q[j][1]){
  42. flag=1;
  43. break;
  44. }
  45. }
  46. if(flag==0){
  47. temp[t]=i;
  48. t++;
  49. q[i][0]=-1;
  50. q[i][1]=-1;
  51. set1[i]=-1;
  52. set2[i]=-1;
  53. i=-1;
  54. }
  55. }
  56. printf("\n\nRemoved unreachable states :-");
  57. t=0;
  58. for(int r=0;r<n;r++){
  59. if(q[r][0]!=-1){
  60. printf("\nq[%d][0]=%d",r,q[r][0]);
  61. printf("\nq[%d][1]=%d",r,q[r][1]);
  62. if(r==final[t]){
  63. set1[r]=1;
  64. if(t<f){
  65. t++;
  66. }
  67. }else{
  68. set1[r]=0;
  69. }
  70. }
  71. }
  72. /*for(int i=0;i<n;i++){
  73. if(set1[i]!=-1){
  74. printf("\nset1[%d]=%d",i,set1[i]);
  75. printf("\nset2[%d]=%d",i,set2[i]);
  76. }
  77. }*/
  78.  
  79. /*flag=0;
  80. //exit=0;
  81.   t=2;cont=0;
  82.   set2[0]=0;
  83.   int x=0,y1,z1,z2,y2;
  84.   int j=0,i=0;
  85.   for(i=1;i<n;n++){
  86.   x=set1[i];
  87.   if(x<0){
  88.   continue;
  89.   }
  90.   flag=0;
  91.   for(j=0;j<i;j++){
  92.   if(set1[j]<0)continue;
  93.   if(x==set1[j]){
  94.   y1=q[i][0];
  95.   z1=q[j][0];
  96.   y2=q[i][1];
  97.   z2=q[j][1];
  98.   if(set1[y1]==set1[z1] && set1[y2]==set1[z2]){
  99.   set2[i]=set2[j];
  100.   flag=1;
  101.   break;
  102.   }
  103.   }
  104.   }
  105.   if(flag==0){
  106.   t++;
  107.   cont++;
  108.   set2[j]=cont;
  109.   }
  110.   }*/
  111.  
  112. /*set2[0]=0;
  113.   set2[1]=0;
  114.   set2[3]=0;
  115.   set2[5]=0;
  116.   int a=0,b=0,x1=0,x2=0,y1=0,y2=0;
  117.   for(a=1;a<n;a++){
  118.   flag=0;
  119.   if(set1[a]==-1){
  120.   printf("\n skiped a %d",a
  121.   continue;
  122.   }else{
  123.  
  124.   for(b=0;b<a;b++){
  125.   if(set1[b]==-1){
  126.   printf("\n skiped b %d",b);
  127.   }else{
  128.   if(set1[a]==set1[b]){
  129.   x1=q[a][0];
  130.   x2=q[b][0];
  131.   y1=q[a][1];
  132.   y2=q[b][1];
  133.   if(set1[x1]==set1[x2] && set1[y1]==set1[y2]){
  134.   set2[a]=set2[b];
  135.   flag=1;
  136.   break;
  137.   }
  138.   }
  139.   }
  140.   }
  141.   if(flag==0){
  142.   t++;
  143.   set2[a]=t;
  144.   }
  145.   }
  146.   }*/
  147.  
  148. set2[0]=0;
  149. int a=0,b=0,x1=0,x2=0,y1=0,y2=0;
  150. for(a=1;a<n;a++){
  151. flag=0;
  152. if(set1[a]!=-1){
  153. for(b=0;b<a;b++){
  154. if(set1[b]!=-1){
  155. if(set1[a]==-1 || set1[b]==-1){
  156. printf("\nHello");
  157. }
  158. if(set1[a]==set1[b]){
  159. x1=q[a][0];
  160. x2=q[b][0];
  161. y1=q[a][1];
  162. y2=q[b][1];
  163. if(set1[x1]==set1[x2] && set1[y1]==set1[y2]){
  164. set2[a]=set2[b];
  165. flag=1;
  166. break;
  167. }
  168. }
  169. }else{
  170. printf("\nSKIPED b=%d",b);
  171. }
  172. }
  173. if(flag==0){
  174. t++;
  175. set2[a]=t;
  176. }
  177. }else{
  178. printf("\nSKIPED a=%d",a);
  179. }
  180. }
  181.  
  182. for(int i=0;i<n;i++){
  183. if(set1[i]!=-2){
  184. // printf("\nset1[%d]=%d",i,set1[i]);
  185. printf("\nset2[%d]=%d",i,set2[i]);
  186. }
  187. }
  188.  
  189.  
  190.  
  191. return 0;
  192. }
  193.  
  194.  
Success #stdin #stdout 0s 4540KB
stdin
Standard input is empty
stdout
Enter the number of states : 

Enter the number of Final states : 

Removed unreachable states :-