WA 4 心态已炸,求调
查看原帖
WA 4 心态已炸,求调
1121518
StarsIntoSea楼主2024/8/3 18:36
#include <iostream>
#include <stack>
#include <vector>
#include <algorithm>
#include <string.h>
using namespace std;
const int N=2005;
vector<int> e[N],a;
stack<int> s;
int stk[N],cnt=0;
int f[N][N],in[N],vis[N];
int n,flag;

void dfs(int x,int las){;
	if(flag) return ;
	stk[++cnt]=x;
	in[x]=1; vis[x]=1;
	for(auto y:e[x]) if(y^las){
		if(flag) return;
		if(in[y]){
			for(int i=cnt;i>=1;i--){
				a.push_back(stk[i]);
			}
			flag=1;
			return;
		}
		dfs(y,x);
	}
	in[x]=0;
	if(cnt>0) --cnt;
}
int ask(int x,int y){
	cout<<"? "<<x<<" "<<y-n<<endl;
	int s;
	scanf("%d",&s);
	return s;
}
void clen(){
	for(int i=1;i<=2*n;++i) e[i].clear();
	memset(f,0,sizeof f);
	memset(in,0,sizeof in);
	memset(vis,0,sizeof vis);
	a.clear();
	cnt=0;
	flag=0;
}
void mian(){
	scanf("%d",&n);
	clen();
	for(int i=1;i<=(n<<1);++i){
		int u,v;
		scanf("%d%d",&u,&v);
		f[u][v+n]=f[v+n][u]=i;
		e[u].push_back(v+n);
		e[v+n].push_back(u);
	}
	for(int i=1;i<=n;++i)
		if(!vis[i]) dfs(i,0);
//		for(auto y:a) printf("%d\n",y);
	while(a.size()>4){
		int len=a.size();
		int x=a[len-1],y=a[(len-1)>>1];
		int r=((x-1)/n)^((y-1)/n)^1;
		if(r) y=a[((len-1)>>1)-1];
		//		printf("&&&%d %d\n",x,y);
		if(x>y) swap(x,y);
		int col;
		if(f[x][y]) col=f[x][y];
		else col=ask(x,y);
		f[x][y]=f[y][x]=col;
		int p=1;
		for(int i=(len>>1)-1-r;i<len-1;++i){
			int l=a[i];
			int r=a[i+1];
		//	if(l>r) swap(l,r);
			//			printf("%d ^ %d : %d \n",l,r,f[l][r]);
			if(f[l][r]==col){
				p=0;
				break;
			}
		}
		vector<int> b;
		if(!p){
			b.push_back(a[len-1]);
			for(int i=0;i<=(len>>1)-1-r;++i) 
				b.push_back(a[i]);
		
		}
		else{
			
			for(int i=(len>>1)-1-r;i<len;++i){
				b.push_back(a[i]);
			}
			
		}
		swap(a,b);
	}
	sort(a.begin(),a.end());
	printf("! %d %d %d %d",a[0],a[1],a[2]-n,a[3]-n);
	cout<<endl;
	string s;
	cin>>s;
}
int main(){
	int T; scanf("%d",&T);
	while(T--) mian();
}

/*
  2
  4
  1 1
  1 4
  2 1
  2 2
  3 2
  3 3
  4 3
  4 4
  
  1
  5
  1 1
  2 1
  2 2
  3 2
  3 3
  4 3
  4 4
  1 4
  1 2
  5 5
  
 */
2024/8/3 18:36
加载中...