1. 程式人生 > >1149 Dangerous Goods Packaging

1149 Dangerous Goods Packaging

這題如果不用STL很麻煩,而且陣列開的太大很容超記憶體,因此用map和vector十分方便,邏輯也很清楚,基本沒有什麼坑。

#include <stdio.h>
#include<string.h>
#include <map>
#include <vector>
using namespace std;

int main()
{
	int n,m;
	scanf("%d%d",&n,&m);
	map<int,vector<int> >mp;

	int x,y;
	for(int i=0;i<n;
i++){ scanf("%d%d",&x,&y); mp[x].push_back(y); mp[y].push_back(x); } int k; bool isIN[100000]; for(int i=0;i<m;i++){ memset(isIN,false,sizeof(isIN)); scanf("%d",&k); int th[k]; for(int j=0;j<k;j++){ scanf("%d",&th[j]); isIN[th[j]] = true; } bool BAN = false
; for(int j=0;j<k;j++){ for(int s=0;s<mp[th[j]].size();s++){ int temp = mp[th[j]][s]; if(isIN[temp] == true){ BAN = true; break; } } if(BAN == true)break; } if(BAN)printf("No\n"); else printf("Yes\n"); } return 0; }