建议降黄
查看原帖
建议降黄
820807
WhisperingWillow楼主2025/1/21 21:44

		m = read(); n = read();
		f(i , 1 , n) a[i] = read();
		map<int, bool> die , ak , ioi;
		while(m --){
			int j = read();
			bool flg = 1;
			map<int , bool> used;
			set<int> D, T;
			map<int , bool> pre = ak , pr = ioi;
			while(j --){
				int id = read();
				int x = read() , y = read();
				if(x < 1 || x > n || y < 1 || y > n || die[x] || die[y]){
					flg = 0; continue;
				}
				if(!id){
					if(a[x] != 1 || x == y || used[x] || D . find(y) != D . end() || D . find(x) != D . end())
						db(1) , flg = 0;
					D . insert(y);
					if(a[y] == 3) T . insert(y);
				}
				else if(id == 1){
					if(a[x] != 4 || x == y || used[x] || D . find(y) != D . end() || ak[x] || D . find(x) != D . end())
						db(2) , flg = 0;
					ak[x] = 1;
					D . insert(y);
					if(a[y] == 3) T . insert(y); 
				}
				else if(id == 2){
					if(a[x] != 4 || used[x] || D . find(y) == D . end() || ioi[x] || (x != y && D . find(x) != D . end()))
						db(3) , flg = 0;
					ioi[x] = 1;
					D . erase(y);
					T . erase(y);
				}
				else {
					if(a[x] != 3 || x == y || T . find(x) == T . end() || D . find(y) != D . end() ||  D . find(x) == D . end())
						db(4) , flg = 0;
					D . insert(y);
					if(a[y] == 3) T . insert(y);
					T . erase(x);
				}
				used[x] = 1;
			}
			if(!flg || T . size()) cout << "Wrong" << '\n' , ak = pre, ioi = pr;
			else{
				if(D . size() == 0){
					puts("Safe"); continue;
				}
				cout << D . size() << ' ';
				for(auto p : D) cout << p << ' ' , die[p] = 1;
				cout << '\n';
			}
		}	

此题代码难度较低,且细节不多,建议降黄。

2025/1/21 21:44
加载中...