2024-03-09 14:36:44
发布于:广东
遇到困难,求大神指点
#include<bits/stdc++.h>
using namespace std;
const set<int> null;//只是为了把allActionList定义出来设计的占位表 
namespace actions{
	enum action{
		follow = 1,
		nofollow,
		askfollow
	};   //枚举三个操作的值 
}
int main(){
	int t;
	vector<set<int> > allActionList;//set中存放着关注的人的编号
	                                //set所处的位置的下标+1即为成员编号 
	cin >> t;
	while(t--){
		int n,q;
		cin >> n >> q;
		for(int i = 0;i < n;i++){
			allActionList.push_back(null); //把空set填入allActionList 一共填入n个,代表n个成员 
		}
		int action,memberA,memberB;
		for(int i = 0;i < q;i++){
			cin >> action >> memberA >> memberB;
			switch(action){       //判断三个操作 
				case actions::follow:
					if(allActionList[memberA-1].count(memberB) == 1){
						break;
					}
					else{
						allActionList[memberA-1].insert(memberB);
						break;
					}
				case actions::nofollow:
					if(allActionList[memberA-1].count(memberB) == 0){
						break;
					}
					else{
        				allActionList[memberA-1].erase(memberB);
						break;
					}
				case actions::askfollow:
					if(allActionList[memberA-1].count(memberB) == 1 && allActionList[memberB-1].count(memberA) == 1){
						cout << "Yes" << endl; 
						break;
					}
					else{
						cout << "No" << endl;
						break;
					}
			}
		}
		allActionList.clear();
	}
	return 0;
}
全部评论 1
看到你的错误是RE,vector一开始没有任何数据,范围就越界。
2024-03-14 来自 浙江
1这。。。有什么解决办法吗
2024-03-23 来自 广东
0可以尝试判空处理,如果为空就直接加入
2024-07-10 来自 江苏
0











有帮助,赞一个