• 【BZOJ4419】[SHOI2013]发微博(???)


    【BZOJ4419】[SHOI2013]发微博(???)

    题面

    BZOJ
    洛谷

    题解

    一道(easy),每个点维护一下要给周围的点加上多上,如果额外连了一个点进来就给他把标记减掉,如果删掉了一条边就给他把标记加上,然后最后把所有边都删掉就好了。

    #include<iostream>
    #include<cstdio>
    #include<set>
    using namespace std;
    #define pi pair<int,int>
    #define mp make_pair
    #define MAX 200200
    inline int read()
    {
    	int x=0;bool t=false;char ch=getchar();
    	while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
    	if(ch=='-')t=true,ch=getchar();
    	while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
    	return t?-x:x;
    }
    set<pi> S;
    int val[MAX],ans[MAX],n,m;char ch[5];
    int main()
    {
    	n=read();m=read();
    	while(m--)
    	{
    		scanf("%s",ch);int x=read(),y;
    		if(ch[0]=='!')++val[x];
    		else if(ch[0]=='+')
    		{
    			y=read();if(x>y)swap(x,y);S.insert(mp(x,y));
    			ans[y]-=val[x];ans[x]-=val[y];
    		}
    		else
    		{
    			y=read();if(x>y)swap(x,y);S.erase(mp(x,y));
    			ans[y]+=val[x];ans[x]+=val[y];
    		}
    	}
    	for(set<pi>::iterator it=S.begin();it!=S.end();++it)
    	{
    		pi p=*it;int u=p.first,v=p.second;
    		ans[u]+=val[v];ans[v]+=val[u];
    	}
    	for(int i=1;i<=n;++i)printf("%d ",ans[i]);
    	puts("");return 0;
    }
    
  • 相关阅读:
    验证码学习笔记
    字符串String类
    密封关键字sealed
    比较两个对象是否为同一个对象
    Unity让带有Rigidbody组件的游戏对象停止运动
    Unity3d-制作粒子光环特效
    Unity3d实现的十字路口的模拟(三)
    kinect v2
    Unity3D 之射线检测
    FFmpeg X264的preset和tune
  • 原文地址:https://www.cnblogs.com/cjyyb/p/10282753.html
Copyright © 2020-2023  润新知