比赛 CSP2022提高组 评测结果 AAAAAAAAEEEEEEEEEEEE
题目名称 星战 最终得分 40
用户昵称 HeSn 运行时间 2.595 s
代码语言 C++ 内存使用 128.39 MiB
提交时间 2022-10-30 10:35:05
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int MAXN = 5010;
int n, m, q, g[MAXN][MAXN], inc[MAXN];
vector<int> cd[MAXN], cd2[MAXN];
signed main() {
	freopen("csp2022_galaxy.in", "r", stdin);
	freopen("csp2022_galaxy.out", "w", stdout);
	cin >> n >> m;
	for(int i = 1; i <= m; i ++) {
		int x, y;
		cin >> x >> y;
		cd[x].push_back(y);
		cd2[y].push_back(x);
		inc[x] ++;
	}
	cin >> q;
	for(int i = 1; i <= n; i ++) {
		if(!inc[i]) {
			for(int j = 1; j <= q; j ++) {
				cout << "NO" << endl;
			}
			return 0;
		}
	}
	for(int i = 1; i <= q; i ++) {
		int op, x, y;
		cin >> op >> x;
		if(op == 1) {
			cin >> y;
			g[x][y] = 1;
			inc[x] --;
		}
		if(op == 2) {
			for(int i = 0; i < cd2[x].size(); i ++) {
				if(!g[cd2[x][i]][x]) {
					inc[cd2[x][i]] --;
				}
				g[cd2[x][i]][x] = 1;
			}
		}
		if(op == 3) {
			cin >> y;
			g[x][y] = 0;
			inc[x] ++;
		}
		if(op == 4) {
			for(int i = 0; i < cd2[x].size(); i ++) {
				if(g[cd2[x][i]][x]) {
					inc[cd2[x][i]] ++;
				}
				g[cd2[x][i]][x] = 0;
			}
		}
		bool flg = 1;
		for(int j = 1; j <= n; j ++) {
//			cout << inc[j] << ' ';
			if(inc[j] != 1) {
				flg = 0;
//				break;
			}
		}
		if(flg) {
			cout << "YES" << endl;
		}
		else {
			cout << "NO" << endl;
		}
	}
	return 0;
}