| 比赛 |
2026.4.11 |
评测结果 |
AAEEEEEPEEPPEEEEEEPPEEEEEEEEEEEEEEEAAEEEEEEPPEEEEEEPPEE |
| 题目名称 |
图 |
最终得分 |
11 |
| 用户昵称 |
RpUtl |
运行时间 |
9.442 s |
| 代码语言 |
C++ |
内存使用 |
12.37 MiB |
| 提交时间 |
2026-04-11 12:21:38 |
显示代码纯文本
#include <bits/stdc++.h>
#include "gra.h"
using namespace std;
const int N=1005;
int n,tot,ans[N][2],vis[N],a[N][N];
vector<int>G0[N],G1[N];
void dfs0(int x){
vis[x]=1;
for(auto y:G0[x]){
if(vis[y])continue;
++tot;
ans[tot][0]=x;
ans[tot][1]=y;
dfs0(y);
}
return;
}
void dfs1(int x){
vis[x]=1;
for(auto y:G1[x]){
if(vis[y])continue;
++tot;
ans[tot][0]=x;
ans[tot][1]=y;
dfs1(y);
}
return;
}
void tree(int n){
for(int i=1;i<=n;i++){
a[i][i]=0;
for(int j=i+1;j<=n;j++){
a[i][j]=a[j][i]=query(i,j);
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(a[i][j]){
G1[i].push_back(j);
G1[j].push_back(i);
}else{
G0[i].push_back(j);
G0[j].push_back(i);
}
}
}
tot=0;dfs0(1);int bl=0;
for(int i=1;i<=n;i++)bl+=vis[i];
if(bl==n){
for(int i=1;i<n;i++){
report(ans[i][0],ans[i][1]);
}
}else{
for(int i=1;i<=n;i++)vis[i]=0;
tot=0;dfs1(1);
for(int i=1;i<n;i++){
report(ans[i][0],ans[i][1]);
}
}
return;
}