xlucn/PAT

1090PATbasic部分正确

WaterLemonade opened this issue · 1 comments

#include <bits/stdc++.h>
using namespace std;
map<int,vector<int> >mp;
map<int,bool>shown;
bool isvalid(vector <int> box){
	for(int i=0;i<box.size();i++){
		for(int j=0;i<mp[box[i]].size();j++)
			if(shown[mp[box[i]][j]])return false;
	}return true;
}
int main(int argc, char **argv)
{
	int n,m;
	scanf("%d %d",&n,&m);
	for(int i=0;i<n;i++){
		int a,b;
		scanf("%d %d",&a,&b);
		mp[a].push_back(b);
		mp[b].push_back(a);
	}
	for(int i=0;i<m;i++){
		
		int t;
		cin>>t;
		vector<int > box;
		shown.clear();//
		while(t--){
			int b;
			cin>>b;
			box.push_back(b);
			shown[b]=true;
		}
		if(isvalid(box))printf("Yes\n");
		else printf("No\n");
		
	}
	
	
	return 0;
}
xlucn commented

不好意思,我对c++的map等标准库函数不很熟悉,不能确定你的代码在哪里有问题。
另外,不知道这里是误改还是什么:

		for(int j=0;i<mp[box[i]].size();j++)

循环控制应该是对j的判断吧。