样例跑的没问题,但是全TLE了,麻烦问下这段代码还有没有办法可以救一下
#include <iostream>
#define MAXN 20002
using namespace std;
struct wine{
int op,rp;//op: operation,rp:red paper
}we[MAXN];
int t,n,m;
void Op1(int x){
we[x].rp++;
}
void Op2(int x){
for(int i = 1;i <= n;i++){
if(i != x){
we[i].rp++;
}
}
}
int getNone(){
for(int i = 1;i <= n;i++){
if(we[i].rp == 0){
cout<<-1<<endl;
break;
}
}
}
int getAll(int i){
int test = 0;
for(int i = 1;i <= n;i++){
if(we[i].rp != 0){
test++;
}
}
if(test >= n){
return i;
}else{
return 0;
}
}
void clear(){
for(int i = 1;i <= n;i++){
we[i].op = 0;
we[i].rp = 0;
}
n = 0;
m = 0;
}
int main(){
cin>>t;
for(int i = 1;i <= t;i++)//input test group
{
cin>>n>>m;
//input
for(int i = 1;i <= m;i++){
int tmp,x;
cin>>tmp>>x;
we[x].op = tmp;
}
//op
for(int i = 1;i <= m;i++){
if(we[i].op == 1){
Op1(i);
}else{
Op2(i);
}
//test whether it can AC the request
int tmp = getAll(i);
if(tmp != 0){
cout<<tmp<<endl;
break;
}
}
//test whether there is still at least one 0 left
getNone();
//clear and ready for next running
clear();
}
return 0;
}