AT_past18_d 大乱闘
题目描述
有 $N$ 名玩家(编号为 $1$ 到 $N$)正在玩一个多人格斗游戏。比赛开始时,所有 $N$ 名玩家**同时进入**擂台。最初每名玩家的**得分**都是 $0$。
接下来比赛中会发生 $M$ 次事件,每个事件为如下两种类型之一:
- 类型 $1$:格式如下。玩家 $x$ **攻击**玩家 $y$。
> 1 $x$ $y$
- 类型 $2$:格式如下。玩家 $z$ **退出**擂台。
> 2 $z$
当一名玩家退出擂台时,会立刻发生以下事件:
- 该玩家的得分减 $1$。
- 如果该玩家自上次进入擂台后(包括比赛开始时)至少被攻击过一次,则最后一次攻击他的那名玩家得分加 $1$。
- 然后,该玩家重新进入擂台。
请输出每个玩家最后的得分。
输入格式
输入通过标准输入给出,格式如下:
> $N$ $M$ $\mathrm{event}_1$ $\mathrm{event}_2$ $\vdots$ $\mathrm{event}_M$
对于 $i=1,2,\ldots,M$,$\mathrm{event}_i$ 表示第 $i$ 个事件,事件类型和参数格式如题目描述所述。
输出格式
对于每个玩家 $i=1,2,\ldots,N$,输出该玩家的最终得分 $S_i$,用空格分隔:
> $S_1$ $S_2$ $\ldots$ $S_N$
说明/提示
### 样例解释 1
比赛开始时,$4$ 名玩家进入擂台,分数为 $(S_1, S_2, S_3, S_4) = (0, 0, 0, 0)$。接下来按顺序发生以下事件:
- 第 $1$ 次事件,玩家 $2$ 攻击了玩家 $3$。
- 第 $2$ 次事件,玩家 $4$ 攻击了玩家 $3$。
- 第 $3$ 次事件,玩家 $3$ 退出擂台,分数减 $1$。自上次进入擂台(即比赛开始)以来,玩家 $3$ 曾在第 $1$、$2$ 次事件被攻击,最后一次攻击他的是玩家 $4$,所以玩家 $4$ 分数加 $1$。随后,玩家 $3$ 重新进入擂台。
- 第 $4$ 次事件,玩家 $2$ 攻击了玩家 $1$。
- 第 $5$ 次事件,玩家 $2$ 退出擂台,分数减 $1$。自上次进入擂台(即比赛开始),玩家 $2$ 没被攻击过,无人加分。随后,玩家 $2$ 重新进入擂台。
- 第 $6$ 次事件,玩家 $3$ 退出擂台,分数减 $1$。自上次进入擂台(即第 $3$ 次事件后),玩家 $3$ 未被攻击,无人加分。随后,玩家 $3$ 重新进入擂台。
最终玩家的得分为 $(S_1, S_2, S_3, S_4) = (0, -1, -2, 1)$。
### 数据范围
- 所有输入均为整数。
- $2 \leq N \leq 2 \times 10^5$
- $1 \leq M \leq 2 \times 10^5$
- $1 \leq x,y,z \leq N$
- $x \neq y$
由 ChatGPT 5 翻译