题目描述:
雾。
题目分析:
刚开始没看到直接关系,XJB YY
其实只需要离线倒着搞就好了
题目链接:
Ac 代码:
#include <cstdio>
#include <iostream>
const int maxm=510000;
int ans[maxm],cnt[maxm];
int p1[maxm],p2[maxm];
int opt[maxm];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
char s[10];
scanf("%s",&s);
if(s[0]=='!') scanf("%d",&p1[i]),opt[i]=1;
if(s[0]=='+') scanf("%d%d",&p1[i],&p2[i]),opt[i]=2;
if(s[0]=='-') scanf("%d%d",&p1[i],&p2[i]),opt[i]=3;
}
for(int i=m;i>=1;i--)
{
if(opt[i]==1) cnt[p1[i]]++;
if(opt[i]==2) ans[p1[i]]+=cnt[p2[i]],ans[p2[i]]+=cnt[p1[i]];
if(opt[i]==3) ans[p1[i]]-=cnt[p2[i]],ans[p2[i]]-=cnt[p1[i]];
}
for(int i=1;i<=n;i++) printf("%d ",ans[i]);
return 0;
}