unlucky_13

Untitled

May 20th, 2013
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.12 KB | None | 0 0
  1. /*
  2.  Author                             :     unlucky_13
  3.  Problem_link                       :     http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=156&problem=136&mosmsg=Submission+received+with+ID+11792907
  4.  Category                           :
  5.  Algorithm_Used                     :
  6.  */
  7.  
  8. #include<cstdio>
  9. #include<sstream>
  10. #include<cstdlib>
  11. #include<cctype>
  12. #include<cmath>
  13. #include<algorithm>
  14. #include<set>
  15. #include<queue>
  16. #include<stack>
  17. #include<list>
  18. #include<iostream>
  19. #include<fstream>
  20. #include<numeric>
  21. #include<string>
  22. #include<vector>
  23. #include<cstring>
  24. #include<map>
  25. #include<iterator>
  26. #define LL long long int
  27. //const long long int inf = 2147483647 ;
  28. //const int minx=;
  29. //const int maxn=;
  30.  
  31. using namespace std;
  32. int M[50][50] ;
  33. vector<char>ans ;
  34. int taken[100] ;
  35.  
  36.  
  37. void DFS(int u)
  38. {
  39.    
  40.     for(int i=0;i<31;i++)
  41.     {
  42.         if(M[u][i]==1 && taken[i]==0) DFS(i) ;
  43.     }
  44.     ans.push_back(u+'A') ;
  45.     taken[u]=1 ;
  46.     return ;
  47.    
  48. }
  49.  
  50.  
  51.  
  52.  
  53. int main() {
  54.  
  55.     freopen("C:\\Users\\Mazhar\\Desktop\\Text_Files\\in.txt", "r", stdin);
  56.    
  57.     char in[5000][25] ;
  58.     int I ;
  59.     while(scanf("%s",in[0])!=EOF)
  60.     {
  61.         memset(M,0,sizeof(M)) ;
  62.         ans.clear() ;
  63.         for(int i=0;i<31;i++) taken[i]=1 ;
  64.         I=1 ;
  65.         while(1)
  66.         {
  67.             scanf("%s",in[I]) ;
  68.             if(in[I][0]=='#') break ;
  69.             else
  70.             {
  71.                
  72.                 for(int j=0;j<strlen(in[I]);j++) taken[in[I][j]-'A']=0 ;
  73.                 I++ ;
  74.             }
  75.         }
  76.        
  77.         for(int i=0;i<I-1;i++){
  78.             for(int j=i+1;j<I;j++){
  79.                 int k = 0 ;
  80.                 while(in[i][k]==in[j][k]) k++ ;
  81.                 if(in[i][j]!='\0' ||in[j][k]!='\0')
  82.                 {
  83.                   M[in[j][k]-'A'][in[i][k]-'A']=1 ;
  84.                 }
  85.             }
  86.         }
  87.        
  88.  
  89.         for(int i=0;i<31;i++){
  90.              if(taken[i]==0) DFS(i) ;
  91.         }
  92.         for(int i=0;i<ans.size();i++) cout<<ans[i] ;
  93.         cout<<endl ;
  94.        
  95.        
  96.     }
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.     return 0;
  106.  
  107. }
Advertisement
Add Comment
Please, Sign In to add comment