luogu 3998 [SHOI2013]发微博 map
考试的时候被卡常了~
code:
#include <bits/stdc++.h>
#define ll long long
#define N 200002
#define setIO(s) freopen(s".in","r",stdin) , freopen(s".out","w",stdout)
using namespace std;
int n,m;
int size[N];
int answer[N];
map<int,int>con[N];
map<int,int>::iterator it;
int main()
{
int i,j;
// setIO("qq");
scanf("%d%d",&n,&m);
for(i=1;i<=m;++i)
{
char op[2];
scanf("%s",op);
if(op[0]=='!')
{
int x;
scanf("%d",&x);
++size[x];
}
if(op[0]=='+')
{
int x,y;
scanf("%d%d",&x,&y);
if(!con[x][y])
{
con[x][y]=con[y][x]=1;
answer[y]-=size[x];
answer[x]-=size[y];
}
}
if(op[0]=='-')
{
int x,y;
scanf("%d%d",&x,&y);
if(con[x][y])
{
con[x][y]=con[y][x]=0;
answer[x]+=size[y];
answer[y]+=size[x];
}
}
}
for(i=1;i<=n;++i)
{
for(it=con[i].begin();it!=con[i].end();it++)
{
if(it->second==0) continue;
int u=it->first;
answer[u]+=size[i];
}
}
for(i=1;i<=n;++i) printf("%d ",answer[i]);
return 0;
}

浙公网安备 33010602011771号