222032026-01-14 17:48:59algoproEgyirányú egyensúlycpp17Elfogadva 50/50126ms5816 KiB
// UUID: 2d501511-5b30-4580-a0b3-fc6d0457d816
#include <bits/stdc++.h>
using namespace std;

typedef pair<int, int> pii;

vector<vector<pii>> csucsok;
vector<pii> elek;
vector<int> irany;
vector<bool> volt;

void keres(int akt){
	for(auto x : csucsok[akt]){
		if(irany[x.second] != -1) continue;

		irany[x.second] = (akt == elek[x.second].first ? 1 : 0);
		keres(x.first);
	}

	volt[akt] = 1;
}

int main() {
	int n, m;
	cin >> n >> m;

	csucsok.assign(n + 1, vector<pii>());
	for(int i = 0; i < m; i++){
		int a, b;
		cin >> a >> b;
		a--; b--;

		elek.push_back({a, b});
		csucsok[a].push_back({b, i});
		csucsok[b].push_back({a, i});
	}

	int ind = m;
	int ans = 0;
	for(int i = 0; i < n; i++){
		if(csucsok[i].size() % 2 == 1){
			elek.push_back({i, n});
			csucsok[n].push_back({i, ind});
			csucsok[i].push_back({n, ind});
			ind++;
			ans++;
		}
	}

	irany.assign(ind, -1);

	volt.assign(n + 1, 0);
	for(int i = 0; i <= n; i++){
		if(volt[i]) continue;

		keres(i);
	}


	cout << ans << "\n";
	for(int i = 0; i < m; i++){
		/*if(irany[i] == 1){
			cout << "-> ";
		} else{
			cout << "<- ";
		}*/

		cout << (irany[i] ? "-> " : "<- ");

		/*if(irany[i] == 1){
			cout << elek[i].first + 1 << " " << elek[i].second + 1 << "\n";
		} else{
			cout << elek[i].second + 1 << " " << elek[i].first + 1 << "\n";
		}*/
	}
	cout << "\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/041ms4268 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms508 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva2/21ms508 KiB
9Elfogadva2/21ms316 KiB
10Elfogadva2/21ms508 KiB
11Elfogadva2/22ms564 KiB
12Elfogadva2/22ms316 KiB
13Elfogadva3/310ms1300 KiB
14Elfogadva3/370ms2992 KiB
15Elfogadva3/3126ms3512 KiB
16Elfogadva3/327ms2580 KiB
17Elfogadva3/352ms2236 KiB
18Elfogadva3/326ms2224 KiB
19Elfogadva3/330ms2788 KiB
20Elfogadva3/357ms4784 KiB
21Elfogadva3/343ms4780 KiB
22Elfogadva3/396ms5816 KiB