221192026-01-14 17:12:25algoproEgyirányú egyensúlycpp17Wrong answer 0/5056ms7220 KiB
// UUID: 08253ed7-12b5-4d48-b810-121637e02021
#include <bits/stdc++.h>
using namespace std;

vector<vector<array<int, 2>>> g; //hova, index
vector<bool> vis;
vector<int> ans, cnt;

void dfs(int v){
    while(cnt[v] < g[v].size()){
        if(!vis[g[v][cnt[v]][1]]){
            vis[g[v][cnt[v]][1]] = true;
            ans[g[v][cnt[v]][1]] = v;
            dfs(g[v][cnt[v]++][0]);
        }
        else cnt[v]++;
    }
    cout << v << " ";
}

int main() {
    int n, m;
    cin >> n >> m;
    g.resize(n + 2);
    vis.resize(m + 3 * n, false);
    ans.resize(m + 3 * n);
    cnt.resize(n + 2, 0);
    vector<array<int, 2>> e(m);
    for(int i = 0; i < m; i++){
        cin >> e[i][0] >> e[i][1];
        g[e[i][0]].push_back({e[i][1], i});
        g[e[i][1]].push_back({e[i][0], i});
    }
    int j = m;
    int szaml = 0;
    for(int i = 1; i <= n; i++){
        if(g[i].size() % 2 == 1){
            g[i].push_back({n + 1, j});
            g[n + 1].push_back({i, j++});
            szaml++;
        }
    }
    dfs(n + 1);
    for(int i = 1; i <= n; i++){
        if(cnt[i] != g[i].size()) dfs(i);
    }
    cout << szaml << "\n";
    for(int i = 0; i < m; i++){
        if(e[i][0] == ans[i]) cout << "-> ";
        else cout << "<- ";
    }
}
SubtaskSumTestVerdictTimeMemory
base0/50
1Wrong answer0/01ms508 KiB
2Wrong answer0/041ms5168 KiB
3Wrong answer0/21ms316 KiB
4Wrong answer0/21ms316 KiB
5Wrong answer0/21ms316 KiB
6Wrong answer0/21ms316 KiB
7Wrong answer0/21ms316 KiB
8Wrong answer0/22ms388 KiB
9Wrong answer0/21ms316 KiB
10Wrong answer0/22ms316 KiB
11Wrong answer0/22ms564 KiB
12Wrong answer0/22ms316 KiB
13Wrong answer0/310ms1588 KiB
14Wrong answer0/323ms3656 KiB
15Wrong answer0/328ms4420 KiB
16Wrong answer0/328ms3244 KiB
17Wrong answer0/316ms2780 KiB
18Wrong answer0/328ms2724 KiB
19Wrong answer0/330ms3408 KiB
20Wrong answer0/346ms5824 KiB
21Wrong answer0/350ms6092 KiB
22Wrong answer0/356ms7220 KiB