大白书309页
#include<bits/stdc++.h>
using namespace std;
char s[55];
int m[11][11],b[11],a[11],in[11];
int main()
{
int t,i,j,n,k;
cin>>t;
while(t--)
{
scanf("%d%s",&n,s);
memset(m,0,sizeof(m));
memset(in,0,sizeof(in));
for(i=1,j=1,k=0;k<strlen(s);++k,++j)
{
if(j==n+1) {++i;j=i;}
if(s[k]=='+') {m[i-1][j]=1;in[j]++;}
else if(s[k]=='-') {m[j][i-1]=1;in[i-1]++;}
}
int cnt=0,v[11],val=0;
while(cnt<=n)
{
memset(v,0,sizeof(v));
for(i=0;i<=n;++i)
if(in[i]==0)
{
b[i]=val;
v[i]=1;
++cnt;
in[i]=-1;
}
++val;
for(i=0;i<=n;++i)
{
if(v[i])
{
for(j=0;j<=n;++j)
if(m[i][j])
--in[j];
}
}
}
for(i=1;i<n;++i) printf("%d ",b[i]-b[i-1]);
printf("%d\n",b[i]-b[i-1]);
}
return 0;
}