比赛 2026.4.11 评测结果 AAEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEEEEEEEEEEE
题目名称 最终得分 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;
}