比赛 CSP2022提高组 评测结果 AAAAAAAATTTTTTTTTTTT
题目名称 星战 最终得分 40
用户昵称 空条承太郎& 运行时间 24.071 s
代码语言 C++ 内存使用 16.22 MiB
提交时间 2022-10-30 10:55:06
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int n, m, q;
int c[500005] = {0};
int r[500005] = {0};
int a[500005] = {0};
int b[500005] = {0};
int z;
struct node
{
    int u;
    int v;
    bool f;
} e[500005];
int top=0;
int main()
{
    freopen("csp2022_galaxy.in", "r", stdin);
    freopen("csp2022_galaxy.out", "w", stdout);
    cin>>n>>m;
    z=m;
    for(int i=1,x,y;i<=m;i++)
    {
        cin>>x>>y;
        c[x]++, r[y]++;
        a[x]++, b[y]++;
        top++;
        e[top].u = x;
        e[top].v = y;
        e[top].f = 1;
    }
    cin >> q;
    while(q--)
    {
        int t, u, v;
        cin>>t;
        if(t==1)
        {
            cin >> u >> v;
            for(int i=1;i<=top;i++)
            {
                if(e[i].u==u&&e[i].v==v)
                {
                    e[i].f=0;
                }
            }
            a[u]--, b[v]--;
            z--;
        } 
        else if(t==2){
            cin>>u;
            for (int i=1;i<=top;i++)
            {
                if (e[i].f&&e[i].v==u)
                {
                    e[i].f=0;
                    a[e[i].u]--,b[u]--;
                    z--;
                }
            }
        }
        else if (t==3){
            cin >> u >> v;
            for (int i=1;i<=top;i++)
            {
                if (e[i].u==u&&e[i].v==v)
                {
                    e[i].f=1;
                }
            }
            a[u]++, b[v]++;
            z++;
        }
        else
        {
            cin >> u;
            for (int i=1;i<=top;i++)
            {
                if (!e[i].f&&e[i].v==u)
                {
                    e[i].f=1;
                    a[e[i].u]++, b[u]++;
                    z++;
                }
            }
        }
        bool f=1;
        if (z==n){
            for (int i=1; i<=n;i++){
                if (a[i]!=1){
                    f=0;
                }
            }
            if (f) cout << "YES" << endl;
            else cout << "NO" << endl;
        }
        else cout << "NO" << endl;
    }
    return 0;
}