NYOJ93 汉诺塔(三)

2014-11-24 11:43:38 · 作者: · 浏览: 0

原题链接

#include 
  
   
#include 
   
     #include 
    
      using namespace std; int main(){ stack
     
       s[4]; int t, m, n, a, b, i, ok; scanf("%d", &t); while(t--){ scanf("%d%d", &m, &n); for(i = m; i > 0; --i) s[1].push(i); ok = 1; while(n--){ scanf("%d%d", &a, &b); if(ok) if(s[a].empty() || (!s[b].empty() && s[b].top() < s[a].top())) ok = 0; else{ s[b].push(s[a].top()); s[a].pop(); } } printf(ok   "legal\n" : "illegal\n"); for(i = 1; i < 4; ++i) while(!s[i].empty()) s[i].pop(); } return 0; }
     
    
   
  

801366 长木 汉诺塔(三) Accepted 0 308 C/C++ 04-07 20:48:53