Logo 邂逅编程之美

UOJ

时间限制:2 s 空间限制:128 MB
Statistics

下发文件

题目描述

你需要构造一个长为 $1\sim n$ 的排列 $p$。

有 $m$ 个奖励,每个奖励形如 $(a,b,c)$,表示若 $p_b$ 处于 $p_a$ 与 $p_c$ 之间,即 $p_a< p_b< p_c$ 或 $p_c< p_b< p_a$,则获得 $1$ 收益。

你的方案需要使得收益 $\ge \lceil \frac m2\rceil$。

注意:数据保证存在收益 $=m$ 的方案

输入格式

第一行两个整数 $n,m$。

接下来 $m$ 行,每行三个整数,表示 $a,b,c$。

输出格式

一行 $n$ 个整数,表示你构造的排列。只需要满足收益 $\ge \lceil \frac m2\rceil$ 则被判为正确。

样例

样例 $1$ 输入

6 3
2 4 3
4 1 3
2 1 5

样例 $1$ 输出

3 1 5 2 4 6

样例 $2$

见下发文件 $\text{ex\_construct2.in}$ 和 $\text{ex\_construct2.ans}$。

数据范围

对于所有数据,有 $n\le 10^5,m\le 10^5$。

  • Subtask 1 (10 points):$n\le 10$。
  • Subtask 2 (10 points):$c=1$。
  • Subtask 3 (10 points):$n\le 20$,$m\le 50$。
  • Subtask 4 (10 points):$n\le 20$。
  • Subtask 5 (10 points):$m\le 10$。
  • Subtask 6 (50 points):无特殊性质。