• <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進行拓撲排序,超時 ,只能重寫
            #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算法才過
            #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 蝸牛 閱讀(1430) 評論(0)  編輯 收藏 引用 所屬分類: ACM ICPC

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

            導航

            統(tǒng)計

            常用鏈接

            留言簿(1)

            隨筆分類(20)

            隨筆檔案(20)

            Favorites

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久久久婷婷| 99999久久久久久亚洲| 久久国产精品二国产精品| 亚洲精品综合久久| 久久福利青草精品资源站免费| 久久精品国产亚洲精品| 国产精品乱码久久久久久软件| 97久久精品国产精品青草| 久久精品国产99久久香蕉| 久久无码中文字幕东京热| 中文字幕成人精品久久不卡| 国产成人久久精品一区二区三区 | 久久国产精品久久| 久久久91人妻无码精品蜜桃HD| 亚洲中文久久精品无码ww16 | 中文字幕无码久久人妻| 波多野结衣中文字幕久久| 一级女性全黄久久生活片免费| 国内精品伊人久久久久av一坑| 亚洲欧洲久久av| 久久e热在这里只有国产中文精品99| 久久婷婷五月综合国产尤物app | 丁香五月综合久久激情| 99麻豆久久久国产精品免费| 久久强奷乱码老熟女网站 | 国产精品久久久久a影院| 久久99精品久久久久久9蜜桃| 日韩精品久久久肉伦网站| 久久夜色精品国产网站| 国内精品伊人久久久久妇| 三级片免费观看久久| 久久久久久久97| 国产亚洲美女精品久久久2020| 久久久国产精品| 欧美久久久久久午夜精品| 久久九九免费高清视频| 精品无码人妻久久久久久| 久久99精品国产麻豆蜜芽| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 国产福利电影一区二区三区,免费久久久久久久精 | 久久99国产乱子伦精品免费|