CF2045L.Buggy DFS

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

你正在学习一种名为深度优先搜索(DFS)的图遍历算法。然而,由于一个小错误,你的算法与标准版本略有区别。以下是你实现的有误深度优先搜索(BDFS)算法,假设图中有 NN 个节点(编号从 11 到 NN)。

BDFS():
  令 S 为一个空栈
  令 FLAG 为大小为 N 的布尔数组,初始值均为 false
  令 counter 为一个整数,初始化为 0

  将 1 压入栈 S

  当 S 不为空时:
    弹出 S 的栈顶元素到 u
    FLAG[u] = true

    对于 u 的每个邻居 v(按升序访问):
      counter = counter + 1
      如果 FLAG[v] 为 false:
        将 v 压入栈 S

  返回 counter

你发现这个错误让算法比标准的 DFS 慢。通过查看函数 BDFS() 的返回值可以探究这个问题。为了更好地研究算法的行为,你打算构造一些无向简单图,让函数 BDFS() 的返回值等于 KK,或者确定这样的图是否存在。

输入格式

输入只包含一个整数 KK (1≤K≤1091 \leq K \leq 10^9)。

输出格式

如果无法构造一个无向简单图使得 BDFS() 返回 KK,则输出 -1 -1。

否则,按照以下格式输出图的描述。第一行包含两个整数 NN 和 MM,分别表示图中的节点数和无向边数。接下来的 MM 行,每行包含两个整数 uu 和 vv,表示连接节点 uu 和节点 vv 的一条无向边。边的顺序可以随意,图需满足以下条件:

  • 1≤N≤32 7681 \leq N \leq 32\,768
  • 1≤M≤65 5361 \leq M \leq 65\,536
  • 对于所有的边,1≤u,v≤N1 \leq u, v \leq N
  • 图为无向简单图,即没有重边和自环

注意,你不需要尽量减少节点或边的数量。可以证明,如果可以构造一个图使得 BDFS() 返回值为 KK,则必然存在一个满足所有上述限制条件的图解。若有多个解,任选其一即可。

例子与提示

样例输入/输出 #1 的解析:

左图为该样例的输出。右图是该例子的另一个合理解。

样例输入/输出 #3 的解析:

下图为该例的输出。

本翻译由 AI 自动生成

输入输出样例

  • 输入#1

    8

    输出#1

    3 3
    1 2
    1 3
    2 3
  • 输入#2

    1

    输出#2

    -1 -1
  • 输入#3

    23

    输出#3

    5 7
    4 5
    2 3
    3 1
    2 4
    4 3
    2 1
    1 5

输入解题思路,AI测评打分。不知道怎么写?

首页