222452026-01-14 18:29:33algoproEgyirányú egyensúlycpp17Elfogadva 50/5048ms6004 KiB
// UUID: 4bfd80c6-aa7f-47ab-80a7-a6c0dca62059
#include <bits/stdc++.h>
using namespace std;

vector<vector<array<int, 3>>> g;
vector<int> q;
vector<int> w;

void dfs(int h){
	while(w[h] < g[h].size()){
		if(q[g[h][w[h]][1]]!=0){
			w[h]++;
			continue;
		}
		q[g[h][w[h]][1]]=g[h][w[h]][2];
		dfs(g[h][w[h]++][0]);
	}
}

int main() {
	int n , m; cin >> n >> m;
	g.resize(n+1);
	w.resize(n+1);
	int o = 0;
	for(int i = 0; i < m; i++){
		int x , y;cin >> x >> y;
		g[x].push_back({y , o , 1});
		g[y].push_back({x , o , -1});
		o++;
	}
	for(int i = 1; i <= n; i++){
		if(g[i].size()%2){
			g[0].push_back({i , o , 1});
			g[i].push_back({0 , o , -1});
			o++;
		}
	}
	q.resize(o , 0);
	for(int i = 0; i <= n; i++)dfs(i);
	cout << o-m << endl;
	for(int i = 0; i < m; i++)cout << (q[i]==1?"-> ":"<- ");
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/037ms4444 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva2/21ms316 KiB
9Elfogadva2/21ms316 KiB
10Elfogadva2/22ms316 KiB
11Elfogadva2/22ms316 KiB
12Elfogadva2/22ms316 KiB
13Elfogadva3/38ms1380 KiB
14Elfogadva3/319ms3124 KiB
15Elfogadva3/323ms3404 KiB
16Elfogadva3/325ms2920 KiB
17Elfogadva3/312ms2108 KiB
18Elfogadva3/325ms2356 KiB
19Elfogadva3/327ms3016 KiB
20Elfogadva3/337ms4748 KiB
21Elfogadva3/343ms5052 KiB
22Elfogadva3/348ms6004 KiB