#include <cstdio> #include <stack> #include <algorithm> using namespace std; int main(){ stack<int> 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 | 长木 | 汉诺塔(三) | ![]() |
0 | 308 | C/C++ | 04-07 20:48:53 |
原文:http://blog.csdn.net/chang_mu/article/details/23127921