CCF CSP 竞赛试题——消息传递接口(201903-4)

mac2024-04-20  4

#include <iostream> #include <stdio.h> #include <cctype> #include <list> #include <vector> using namespace std; struct STATE { int id; bool send; }; int main() { int T, n; cin >> T >> n; getchar(); while (T--) { vector<list<STATE> > A; for (int k = 0; k < n; ++k) { string s; getline(cin, s); list<STATE> cur; for (int i = 0; i < s.length();) { STATE x; x.send = s[i] == 'S'; x.id = 0; while (isdigit(s[++i])) x.id = x.id * 10 + s[i] - '0'; ++i; cur.push_back(x); } A.push_back(cur); } while (true) { bool done = true; bool refreshed = false; for (int i = 0; i < n; ++i) if (!A[i].empty()) { done = false; if (!A[i].begin()->send) { int idx = A[i].begin()->id; if (!A[idx].empty() && A[idx].begin()->send && A[idx].begin()->id == i) { A[idx].erase(A[idx].begin()); A[i].erase(A[i].begin()); refreshed = true; break; } } } if (done) { cout << 0 << endl; break; } else if (!refreshed) { cout << 1 << endl; break; } } } return 0; }
最新回复(0)