• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            POJ 1094 C++ (圖論)

            //用DFS進(jìn)行拓?fù)渑判颍瑫r(shí) ,只能重寫
            #include"stdio.h"

            #include"string.h"
            #include"stdlib.h"

            int map[26][26],v[26],used[26],flag,n,total;
            char str[27];
            void sort(int i,int m)
            { int k;
            if(total==n)
                 {  flag=2;
                      return ;
                  }  
            for(k=0;k<n && !flag;k++)
                  { if(map[i][k]==0)
                       continue;
                   if(v[k])
                      { flag=1;
                         return ;
                       }
                   str[m]=k+65;    
                   total++;
                   v[k]=1;  
                   sort(k,m+1);
                   if(flag)
                      return ;
                   v[k]=0;
                   total--;
                  }
            }                


            int main()
            {int row,i,j,a,b,k,l;
            char s[4];
               freopen("in.txt","r",stdin);
               freopen("out.txt","w",stdout);
            while(1)
              { scanf("%d%d",&n,&row);
                 if(n==0 && row==0)
                    break;

                 flag=0;
                 memset(map,0,sizeof(map));
                 memset(used,0,sizeof(used));
                 for(k=1;k<=row;k++)
                     { scanf("%s",s);
                      if(!flag)
                       {memset(v,0,sizeof(v));
                        a=s[0]-65;
                        b=s[2]-65;
                        used[a]=1;
                        used[b]=1;
                        map[a][b]=1;
                        for(i=0;i<n && !flag;i++)
                           {  if(used[i]==0)
                                 break;
                                total=1;
                                v[i]=1;
                                str[0]=i+65;
                                sort(i,1);
                                v[i]=0;
                           }

                         if(flag==1)      
                          printf("Inconsistency found after %d relations.\n",k);    
                         else if(flag==2)
                           {printf("Sorted sequence determined after %d relations: ",k);
                                   for(i=0;i<n;i++)
                                      printf("%c",str[i]);
                                     printf(".\n");
                                     flag=1;
                           }  
                      }
                 }                

               if(!flag)
                  printf("Sorted sequence cannot be determined.\n");

               }

            return 0;
            }              



            // 改用floyd_warshall算法才過(guò)
            #include"stdio.h"
            #include"string.h"
            #include"stdlib.h"
            typedef struct Node{
                    int d;
                    char c;
            }Node;            
            int map[26][26],used[26],flag,n;
            Node node[26];

            int cmp(const void *a, const void *b)
            { return (*(Node *)a).d-(*(Node *)b).d;
            }


            void check()
            {int i,j;
            for(i=0;i<n;i++)
                 { if(used[i]==0)
                       return ;
                   for(j=0;j<n;j++)
                       if(map[i][j])
                         node[j].d++;
                 }
               qsort(node,n,sizeof(Node),cmp);
                for(i=0;i<n;i++)
                    if(node[i].d!=i)
                       return ;
                    flag=2;
            }    
            int main()
            {int row,i,j,a,b,k,h;
            char s[4];
               freopen("in.txt","r",stdin);
               freopen("out.txt","w",stdout);
            while(1)
              { scanf("%d%d",&n,&row);
                 if(n==0 && row==0)
                    break;
                 flag=0;
                 memset(map,0,sizeof(map));
                 for(h=1;h<=row;h++)
                     { scanf("%s",s);
                       if(!flag)
                       {a=s[0]-65;
                        b=s[2]-65;
                        used[a]=1;
                        used[b]=1;
                        for(i=0;i<n;++i)
                            {node[i].d=0;
                             node[i].c=i+65;
                             }
                     if(map[b][a]==1 || a==b)
                         { printf("Inconsistency found after %d relations.\n",h);
                           flag=1;
                         }
                      else
                           map[a][b]=1;
                      for(k=0;k<26;++k)
                            for(i=0;i<26;++i)
                               for(j=0;j<26;++j)
                                 map[i][j]=(map[i][j]||(map[i][k]&&map[k][j]));

                    if(!flag)
                        check();
                    if(flag==2)
                         {printf("Sorted sequence determined after %d relations: ",h);
                              for(i=0;i<n;i++)
                                  printf("%c",node[i].c);
                                 printf(".\n");

                         }  
                      }
                 }                

               if(!flag)
                  printf("Sorted sequence cannot be determined.\n");

               }

            return 0;
            }

            posted on 2008-11-27 00:22 蝸牛 閱讀(1434) 評(píng)論(0)  編輯 收藏 引用 所屬分類: ACM ICPC

            <2008年11月>
            2627282930311
            2345678
            9101112131415
            16171819202122
            23242526272829
            30123456

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿(1)

            隨筆分類(20)

            隨筆檔案(20)

            Favorites

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            久久久国产精品亚洲一区| 国产产无码乱码精品久久鸭| 国产精品无码久久四虎| 国产成人精品久久| 久久e热在这里只有国产中文精品99| 久久亚洲欧洲国产综合| 久久亚洲精精品中文字幕| 伊人久久大香线蕉精品| 狠狠色丁香久久婷婷综合蜜芽五月 | 久久免费美女视频| 日韩精品无码久久一区二区三| 99精品久久久久久久婷婷| 大蕉久久伊人中文字幕| 久久人妻AV中文字幕| 久久九九久精品国产| 久久香综合精品久久伊人| 欧美与黑人午夜性猛交久久久| 精品熟女少妇av免费久久| 亚洲精品国精品久久99热| 美女写真久久影院| 久久人人爽人人爽人人片AV不| 久久精品国产亚洲5555| 久久精品国产一区| 久久国产免费观看精品3| 久久国产精品无| 色婷婷狠狠久久综合五月| 国产L精品国产亚洲区久久| 韩国无遮挡三级久久| 久久国产亚洲高清观看| 色妞色综合久久夜夜| 久久亚洲精品成人无码网站| 欧洲国产伦久久久久久久| 久久免费99精品国产自在现线| 久久婷婷久久一区二区三区| avtt天堂网久久精品| 久久精品中文无码资源站| 久久久久高潮毛片免费全部播放| 女人高潮久久久叫人喷水| 亚洲欧美成人久久综合中文网 | 欧美久久精品一级c片片| 精品午夜久久福利大片|