257712026-03-01 21:04:31abcdEgyirányú egyensúlycpp17Wrong answer 4/50500ms3056 KiB
#include <bits/stdc++.h>
using namespace std;
using pii=pair<int,int>;
#define pb push_back

const int maxn=20001, maxm=50001;
vector<array<int,3>> adj[maxn];
int dir[maxm],cnt[maxn];
bool vis[maxm];
vector<int> path;

void euler(int start){
    stack<int> st;
    st.push(start);
    while(!st.empty()){
        int v=st.top();
        bool found=false;
        while(cnt[v]<adj[v].size()){
            auto [to,i,d]=adj[v][cnt[v++]];
            if(vis[i])continue;
            vis[i]=true;
            dir[i]=d;
            found=true;
            st.push(to);
            break;
        }
        if(!found){
            st.pop();
            path.pb(v);
        }
    }
}

int main(){
    int n,m;cin>>n>>m;
    for(int i=0;i<m;i++){
        int a,b;cin>>a>>b;
        adj[a].pb({b,i,1});
        adj[b].pb({a,i,2});
    }
    vector<int> starts;
    for(int i=1;i<=n;i++)if(adj[i].size()&1)starts.pb(i);
    for(int v:starts){
        if(cnt[v]<adj[v].size())euler(v);
    }
    for(int v=1;v<=n;v++){
        if(cnt[v]<adj[v].size())euler(v);
    }
    cout<<starts.size()<<'\n';
    for(int i=0;i<m;i++){
        if(dir[i]==1)cout<<"<- ";
        else cout<<"-> ";
    }
    cout<<'\n';
}
SubtaskSumTestVerdictTimeMemory
base4/50
1Wrong answer0/02ms1012 KiB
2Wrong answer0/0335ms2736 KiB
3Accepted2/22ms1012 KiB
4Wrong answer0/22ms820 KiB
5Accepted2/21ms820 KiB
6Wrong answer0/21ms824 KiB
7Wrong answer0/21ms776 KiB
8Wrong answer0/22ms900 KiB
9Wrong answer0/21ms820 KiB
10Wrong answer0/22ms820 KiB
11Wrong answer0/26ms820 KiB
12Wrong answer0/24ms820 KiB
13Wrong answer0/343ms1332 KiB
14Time limit exceeded0/3500ms1844 KiB
15Time limit exceeded0/3500ms1964 KiB
16Wrong answer0/346ms2100 KiB
17Wrong answer0/324ms1600 KiB
18Wrong answer0/386ms2088 KiB
19Wrong answer0/3118ms2100 KiB
20Time limit exceeded0/3490ms2612 KiB
21Wrong answer0/3326ms2868 KiB
22Time limit exceeded0/3481ms3056 KiB