E 题过了 但是感觉怪怪的 有没有大佬看下正确性
https://ac.nowcoder.com/acm/contest/view-submission?submissionId=73044663
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <cmath>
#include <queue>
#include <set>
#include <map>
#include <string.h>
using namespace std;
// int mod = 998244353;
const int mod = 998244353;
const int modd = 1e9 + 7;
#define ll long long
#define db double
#define pii pair<int, int>
#define pll pair<ll, ll>
#define pdd pair<db, db>
#define vct vector
#define vi vct<int>
#define vl vct<ll>
#define str string
#define mset multiset
#define pq priority_queue
#define fo(i, l, r) for (int i = l; i <= r; i++)
#define of(i, l, r) for (int i = l; i >= r; i--)
#define fi first
#define se second
#define in insert
#define er erase
#define ct count
#define pb push_back
#define pf push_front
#define lowb lower_bound
#define upb upper_bound
#define sz size()
#define cl clear()
#define em empty()
#define be begin()
#define en end()
#define fr front()
#define bk back()
#define pp pop()
#define ppb pop_back()
#define ppf pop_front()
#define S s = " " + s
#define SS s[i] = " " + s[i]
#define all(g) g.be, g.en
#define mem(a, x) memset(a, x, sizeof(a))
#define sp(x) cout << fixed << setprecision(x)
#define M(x) x %= mod;if(x < 0) x += mod
#define ANS cout << ans << '\n'
#define YES cout << "YES\n"
#define Yes cout << "Yes\n"
#define NO cout << "NO\n"
#define No cout << "No\n"
#define rty return
#define ind " \n"[i == n]
#define jnd " \n"[j == n]
#define knd " \n"[k == n]
#define imd " \n"[i == m]
#define jmd " \n"[j == m]
#define kmd " \n"[k == m]
#define GG g[u].pb(v), g[v].pb(u)
#define GGG g[u].pb({v, w}), g[v].pb({u, w})
#define cmx(x, y) x = max(x, y)
#define cmi(x, y) x = min(x, y)
int bg = 1;
#define print(x...) if(bg) cout << #x << "=", O(x);
void O()
{
cout << '\n';
}
template<class A, class...B>
void O (A a, B...b)
{
cout << a << ',';
O (b...);
}
const db pi = acos (-1.0);
// ax+by=(+-)g
// x=x0+b/g*k
// y=y0-a/g*k
ll exgcd (ll a, ll &x, ll b, ll &y)
{
if (b == 0)
{
x = 1, y = 0;
rty a;
}
ll tt = exgcd (b, y, a % b, x);
y -= a / b * x;
rty tt;
}
ll gcd (ll a, ll b)
{
rty b ? gcd (b, a % b) : a;
}
ll qp (ll a, ll b)
{
ll s = 1;
while (b > 0)
{
if (b & 1)
s = (s * a) % mod;
b >>= 1, a = (a * a) % mod;
}
rty s;
}
ll ny (ll a)
{
// ll x, y;
// if (exgcd(a, x, P, y) == 1)
// rty (x % P + P) % P;
// else
// rty -1;
rty qp (a, mod - 2);
}
//const int X = 1e6 + 5;
//ll fc[X], nn[X], ifc[X];
//void CC()
//{
// fc[0] = nn[0] = ifc[0] = 1;
// fo (i, 1, X - 2) fc[i] = fc[i - 1] * i % mod;
// ifc[X - 2] = ny (fc[X - 2]);
// of (i, X - 2 - 1, 1) ifc[i] = ifc[i + 1] * (i + 1) % mod;
// fo (i, 1, X - 2) nn[i] = ifc[i] * fc[i - 1] % mod;
//}
//ll C (int n, int m)
//{
// if (n < m || n < 0 || m < 0)
// rty 0;
// rty fc[n] * ifc[m] % mod * ifc[n - m] % mod;
//}
int dx[5] = {0, 1, 0, -1, 0};
int dy[5] = {0, 0, 1, 0, -1};
ll MAX = 0x3f3f3f3f3f3f3f3fll;
ll MIN = -MAX;
ll t, n, m, k, x, y, z, u, v, w, l, r, mid, tt, qq, ff, ok, T, mx, mi, op, pos, len, sum, ans;
void CL()
{
ans = sum = len = ff = tt = ok = x = y = z = n = m = k = t = 0, mi = MAX, mx = MIN;
rty;
}
const int N = 1e6 + 5;
ll a[N];
ll b[N];
ll d1[N];
ll d2[N];
vi g1[N];
vi g2[N];
pll q[N];
void solve()
{
cin >> n;
fo (i, 1, n)
{
cin >> m >> x;
g1[i].pb (x);
g2[x].pb (i);
d1[i]++;
d2[x]++;
if (m == 2)
{
cin >> y;
if (x != y)
{
x = y;
g1[i].pb (x);
g2[x].pb (i);
d1[i]++;
d2[x]++;
}
}
}
int D = 0;
fo (i, 1, n)
{
if (d1[i] == 1)
q[++D] = {i, 1};
if (d2[i] == 1)
q[++D] = {i, 2};
}
fo (i, 1, D)
{
auto[u, op] = q[i];
if (op == 1)
{
for (auto v : g1[u])
{
if (!a[u] && !b[v])
{
a[u] = v;
b[v] = u;
}
if (--d2[v] == 1)
q[++D] = {v, 2};
}
}
else
{
for (auto v : g2[u])
{
if (!a[v] && !b[u])
{
a[v] = u;
b[u] = v;
}
if (--d1[v] == 1)
q[++D] = {v, 1};
}
}
}
fo (i, 1, n)
{
if (!a[i])
{
for (auto it : g1[i])
{
if (!b[it])
{
a[i] = it;
b[it] = i;
break;
}
}
}
if (!a[i]) ff = 1;
}
if (ff)
cout << "kou is angry";
else
fo (i, 1, n) cout << a[i] << ind;
rty;
}
signed main()
{
// bg = 0;
// CC();
// shai();
// init();
ios::sync_with_stdio (0), cin.tie (0), cout.tie (0);
sp (12);
// cin >> T; while (T--)
{
CL();
solve();
}
rty 0;
}
