原題鏈接
#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; }