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 翻译