1090 危险品装箱 (25 分)
这个题目做到最后我只能说我好难。。。。
用了map映射vector,好不容易让第三个测试点不超时了,结果一直提示我第四个测试点错误。。。
你知道我有多绝望么。。。。。
百度也找不到。
经过我反复测试,最后发现是最后一个循环的break写的不合适,导致下个测试案例的输入出现问题。
改正以后。。。。。测试点2又超时了。。。
吐血。。。。。。。。。
你猜我怎么改的,,,我把for调换了一下就过了,而且效率还贼高。
你敢信??果然还是我太菜了。。。
源代码如下
#include<iostream>
#include<vector>
#include<stdio.h>
#include<map>
using namespace std;
int main() {
int N, M, tmp1, tmp2;
scanf("%d %d", &N, &M);
vector<int>V;
map<int, vector<int>>Map;
for (int i = 0; i < N; i++) {
scanf("%d %d", &tmp1, &tmp2);
Map[tmp1].push_back(tmp2);
Map[tmp2].push_back(tmp1);
}
while(M--) {
int flag = 0;
scanf("%d", &N);
V.clear();
for (int j = 0; j < N; j++) {
scanf("%d", &tmp1);if(flag==1)continue; V.push_back(tmp1);
for (int m = 0; m < Map[tmp1].size(); m++){
for (int k = 0; k < V.size(); k++) {
if (V[k] == Map[tmp1][m]) {
printf("No\n"); flag = 1; break;
}
}
if (flag == 1)break;
}
}
if (flag == 0)printf("Yes\n");
}
return 0;
}
版权声明:本文为ZiYuTongXue原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。