221192026-01-14 17:12:25algoproEgyirányú egyensúlycpp17Hibás válasz 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 << "<- ";
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/50
1Hibás válasz0/01ms508 KiB
2Hibás válasz0/041ms5168 KiB
3Hibás válasz0/21ms316 KiB
4Hibás válasz0/21ms316 KiB
5Hibás válasz0/21ms316 KiB
6Hibás válasz0/21ms316 KiB
7Hibás válasz0/21ms316 KiB
8Hibás válasz0/22ms388 KiB
9Hibás válasz0/21ms316 KiB
10Hibás válasz0/22ms316 KiB
11Hibás válasz0/22ms564 KiB
12Hibás válasz0/22ms316 KiB
13Hibás válasz0/310ms1588 KiB
14Hibás válasz0/323ms3656 KiB
15Hibás válasz0/328ms4420 KiB
16Hibás válasz0/328ms3244 KiB
17Hibás válasz0/316ms2780 KiB
18Hibás válasz0/328ms2724 KiB
19Hibás válasz0/330ms3408 KiB
20Hibás válasz0/346ms5824 KiB
21Hibás válasz0/350ms6092 KiB
22Hibás válasz0/356ms7220 KiB