原题链接:CCF-CSP 201903-4 消息传递接口
参考博客:CSP 201903-4 (消息传递接口)两种满分思路
#include <bits/stdc++.h>
using namespace std;
const int N=1e4+10;
struct node
{
char type;
int id;
};
int main()
{
std::ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int T,n;
cin>>T>>n;
while(T--)
{
queue<node> q[n];
for(int i=0;i<n;i++)
{
string s; char ch;
while(cin>>s)
{
node x;
x.type=s[0];
string t=s.substr(1);
int num=atoi(t.c_str());
x.id=num;
q[i].push(x);
if((ch=cin.get())=='\n') break;
}
}
bool flag=true;
while(flag)
{
int fail=0,done=0;
for(int i=0;i<n;i++)
{
if(!q[i].empty())
{
node x=q[i].front();
int id=x.id;
if(q[id].empty())
{
cout<<1<<endl;
flag=false;
break;
}
else if(q[id].front().id==i && q[id].front().type!=x.type)
{
q[id].pop();
q[i].pop();
}
else fail++;
}
else done++;
}
if(done==n)
{
cout<<0<<endl;
break;
}
else if(done+fail==n)
{
cout<<1<<endl;
break;
}
}
}
return 0;
}