#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
char str[N];
int in[N];
struct Node{
int s,f,t;
};
vector<Node> procs[N];
Node q[N];
int n;
bool deal()
{
int top = 0;
q[++ top] = procs[0].back(); procs[0].pop_back(); in[0] = 1;
while(top)
{
auto cur = q[top];
int s1 = cur.s, f1 = cur.f, t1 = cur.t;
if(procs[t1].empty() || in[t1] ) return false;
auto nxt = procs[t1].back(); procs[t1].pop_back();
int s2 = nxt.s, f2 = nxt.f, t2 = nxt.t;
if(f1 != f2 && s1 == t2 && t1 == s2) top --,in[s1] = 0;
else q[++ top] = nxt, in[s2] = 1;
if(!top)
{
for(int i = 0; i < n; ++i)
{
if(!procs[i].empty())
{
q[++ top] = procs[i].back();
procs[i].pop_back();
break;
}
}
}
}
return true;
}
int main()
{
int T;
scanf("%d %d\n", &T,&n);
while
CCF CSP 消息传递接口
最新推荐文章于 2022-05-31 15:30:36 发布