QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#674549 | #9484. Colored Complete Graph | The_clear_pool | WA | 1ms | 3824kb | C++14 | 2.6kb | 2024-10-25 16:25:54 | 2024-10-25 16:25:54 |
Judging History
answer
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
#define N 100100
int n;
int vis[N];//1为red,2为blue
int cnt[3];
inline int op(int x){
if(x==1) return 2;
return 1;
}
#define pii pair<int,int>
#define mp make_pair
pii ans[N][3];
int main(){
scanf("%d",&n);
if(n==3){
cout<<"!\n";
cout<<"1 2\n";
cout<<"3 2\n";
return 0;
}
for(int i=2;i<=n;i++){
char ch;
printf("? %d %d\n",1,i);//n-1次询问
fflush(stdout);
ch=getchar();
while(ch!='R'&&ch!='B') ch=getchar();
if(ch=='R'){
vis[i]=1;
cnt[1]++;
ans[cnt[1]][1]=mp(1,i);
}
else{
vis[i]=2;
cnt[2]++;
ans[cnt[2]][2]=mp(1,i);
}
}
return 0;
if(cnt[1]==n-1||cnt[2]==n-1){
printf("!\n");
for(int i=2;i<=n;i++){
printf("%d %d\n",1,i);
}
}
else{
int tmp=0;
if(cnt[1]>cnt[2]){
tmp=1;
}
else{
tmp=2;
}
for(int i=2;i<=n;i++){
if(vis[i]==tmp){
for(int j=2;j<=n;j++){
if(j!=i&&vis[j]!=tmp){
char ch;
int color;
printf("? %d %d\n",j,i);//(n-2)次询问
fflush(stdout);
ch=getchar();
while(ch!='B'&&ch!='R') ch=getchar();
if(ch=='R') color=1;
else color=2;
if(color==op(tmp)){
cnt[op(tmp)]++;
ans[cnt[op(tmp)]][op(tmp)]=mp(i,j);
break;
}
else{
cnt[tmp]++;
vis[j]=tmp;
ans[cnt[tmp]][tmp]=mp(i,j);
if(cnt[tmp]==n-1){
printf("!\n");
for(int k=1;k<=n-1;k++){
printf("%d %d\n",ans[k][tmp].first,ans[k][tmp].second);
}
return 0;
}
}
}
}
}
}
printf("!\n");
for(int i=1;i<=n-1;i++){
printf("%d %d\n",ans[i][op(tmp)].first,ans[i][op(tmp)].second);
}
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 3824kb
input:
3
output:
! 1 2 3 2
result:
wrong answer guessed graph is incorrect