跳转至

两色徽章

  • 参考时间限制:0.5 秒(参考环境:评测环境与性能;仅供预估)
  • 实际时间限制:标准程序在目标评测环境中处理最慢正式测试文件的基准时间的 2 倍,按 0.5 秒的倍数向上取整。
  • 内存限制:512 MB

背景故事

手工展览准备给每位参展者发一枚红色或蓝色徽章。徽章还没发,意见箱先满了:“我俩绝对不能撞色!”

组织者按收到的顺序处理这些要求。只要还能找到一种配色,满足此前已接受的全部要求和新要求,就答应下来;否则只好把新要求退回。有人甚至在纸条上把自己的名字填了两遍,组织者决定照章办理。

采购员倒是很高兴:红色徽章正在打折。每处理完一张纸条,他都想知道,在满足所有已接受要求的前提下,最多能发出多少枚红色徽章。

(本故事由GPT-6 Sol重写)

形式化问题描述

有 \(n\) 个顶点,初始没有边。依次给出 \(m\) 个无向边请求 \((u,v)\) . 若将该边加入当前图后图仍是二分图,则接受该请求并保留这条边;否则拒绝,当前图不变。允许自环和重复请求。

合法二染色是指为每个顶点指定颜色 \(0\) 或 \(1\) ,使每条边的两个端点颜色不同。每次请求后,输出该请求是否被接受,以及当前图的所有合法二染色中,颜色 \(0\) 的顶点数的最大值。每次都可以重新选择配色,不必沿用上一次的方案。

输入格式

第一行两个整数 \(n,m\) .

接下来 \(m\) 行,每行两个整数 \(u,v\) ,表示一条边请求。

输出格式

对每个请求输出一行两个整数。第一个整数为 \(1\)(接受)或 \(0\)(拒绝),第二个整数为最多能染成颜色 \(0\) 的顶点数。

样例 1

输入

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

输出

1 4
1 4
0 4
1 3
1 3

解释

第三条边会与前两条边构成奇环,因此被拒绝。最后所有顶点连成一个分量,其两个颜色类的大小分别为 \(3\) 和 \(2\) .

样例 2

输入

1 3
1 1
1 1
1 1

输出

0 1
0 1
0 1

数据范围与保证

  • \(1\le n,m\le 500\,000\) .
  • \(1\le u,v\le n\) ;允许 \(u=v\) 和重复边。

数据分组

分值比例 额外条件
30% \(n,m\le 15\)
30% \(n,m\le 5\,000\)
40% 无额外条件