尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

GYM106191E-Leaf

GYM106191E-Leaf
📅 发布时间:2026/6/20 7:29:25

GYM106191E-Leaf

题目大意:

有一张隐藏的, \(n\) 个节点的有向图。你的目标是在 \(n\) 次查询内,找到这张图的任一叶子节点,或没有则输出 \(-1\) 。

你的查询操作:

输出两个点集:\(S\) 和 \(T\) ,它们是集合 \(\{1,2,3, \ldots \ldots, n\}\) 的子集。集合 \(S\) 和 \(T\) 可以有交集。

系统将会返回,从 \(S\) 出发,到 \(T\) 结束的边的数量。

\(Hint\)

特殊的,当 \(S==T\) 时,系统返回的值即为,集合中的点构成的子图的边数。

题解

要找到一个叶子节点,即找到一个点,出度+入度为 \(0\)。可以发现,单独把一个节点,和剩余节点作为两个集合,一次查询只能得到入度或出度的信息。我们无法在 \(O(n)\) 时间内维护出每个点。

根据 \(Hint\) ,我们可以先查询所有点的集合,得到全图的边数 \(tot\) 。

再依次查询除去第 \(i\) 个点的集合。可以发现用全图边数减去每次查询的结果,得到的就是第 \(i\) 个点的度。度为 \(1\) 即说明该点为叶子节点。

但是这样查询,一共使用了 \(n+1\) 次查询,比题目要求多了一次。一张图中的边数是固定的,所以最后第 \(n\) 个点的度,可以通过 总度数 \(tot*2\) 减去其余每个点的度数得到。这样我们就只使用了 \(n\) 次查询操作,就得到了所有点的度。

#include<bits/stdc++.h>
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define umap unordered_map
//#define endl '\n'
using namespace std;
using i128 = __int128;
const int mod =1e9+7;
template <typename T>void read(T&x){x=0;int f = 1;char c=getchar();for(;!isdigit(c);c=getchar())if(c=='-')f=-1;for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+(c^48);x*=f;
}
template <typename T>void print(T x) {if (x < 0) { putchar('-'); x = -x; }if (x > 9) print(x / 10);putchar(x % 10 + '0');
}
#define int long long
const int N=500005;
const int M=2000005;
inline void solve()
{int n;cin>>n;cout<<"? "<<n<<" ";for(int i=1;i<=n;i++) cout<<i<<" ";cout<<n<<" ";for(int i=1;i<n;i++) cout<<i<<" ";cout<<n<<endl;int tot;cin>>tot;vector<int> edge(n+1); for(int i=1;i<n;i++){cout<<"? "<<n-1<<" ";for(int j=1;j<i;j++) cout<<j<<" ";for(int j=i+1;j<=n;j++) cout<<j<<" ";cout<<n-1<<" ";for(int j=1;j<i;j++) cout<<j<<" ";for(int j=i+1;j<n;j++) cout<<j<<" ";cout<<n<<endl;cin>>edge[i];edge[i]=tot-edge[i];}edge[n]=2*tot;for(int i=1;i<n;i++) edge[n]-=edge[i];for(int i=1;i<=n;i++){if(edge[i]==1){cout<<"! "<<i<<endl;return;}}cout<<"! "<<-1<<endl;
}signed main()
{ios;int T=1;cin>>T;for(;T--;) solve();return 0;
}

相关新闻

  • WebSocket使用教程 整合springboot
  • 【C++】哈希表 - 详解
  • 论文大纲模版怎么用?看完这篇全明白!

最新新闻

  • 肇庆黄金回收实测六家靠谱老店盘点 - 余生黄金回收
  • 从高危RCE漏洞到POC分析:实战环境搭建与防御体系构建
  • 2026年6月最新劳力士中国官方售后服务地址与客服电话网点列表 - 劳力士服务中心
  • 合肥中科信息工程学校 2026 秋季招生全解析,附官方正规报名入口 - 辛云教育资讯
  • 万国 2026 年 6 月售后新布局:官方专业维修服务网络完成迭代升级,多家全新线下售后服务中心地址正式对外开放启用 - 万国中国服务中心
  • 200+专业动作库:如何为你的游戏角色注入生命力

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号