瑟莉姆的宴会§

思路很简单,先按下标顺序连成一个链,若正序不满足那倒序必定满足。

最后输出即可。

#include <bits/stdc++.h>
#define all(a) a.begin(), a.end()
#define int long long
#define PII pair<int, int>
using ll = long long;
const int N = 1e5 + 10, INF = 1e18, MOD = 1e9 + 7;
using namespace std;

void solve()
{
    int n, m;
    cin >> n >> m;

    map<PII, int> p;

    while (m--)
    {
        int u, v;
        cin >> u >> v;
        if (u < v)
            p[{u, v}]++;
        else
            p[{v, u}]--;
    }

    int sum = 0ll;

    for (auto [key, val] : p)
        sum += val;

    for (int i = 0; i < n; i++)
        cout << (sum >= 0 ? i : (i == n - 1 ? 0 : i + 2)) << " ";
}
signed main()
{
    ios::sync_with_stdio(0), cin.tie(0);
    int T = 1;
    // cin >> T, cin.get();
    while (T--)
        solve();
    return 0;
}