8792022-01-24 23:20:00Babják PéterEgyirányú egyensúlycpp11Accepted 50/5056ms24452 KiB
#include <bits/stdc++.h>
#define MAXN 50100
#define IO ios_base::sync_with_stdio(false);cin.tie(NULL)
using namespace std;
int n,m,db,a,b;
multiset<array<int,3> >adj[MAXN];
vector<int>strt;
bool dir[MAXN];
void dfs(int v)
{
	if(adj[v].empty()==0)
	{
		array<int,3> u=*adj[v].begin();
		adj[v].erase(u);
		adj[u[0]].erase({v,u[1],u[2]});
		if(u[0]==u[1]) dir[u[2]]=1;
		else dir[u[2]]=0;
		dfs(u[0]);
	}
}
int main()
{
	IO;
	cin>>n>>m;
	for(int i=0;i<m;i++)
	{
		cin>>a>>b;
		adj[a].insert({b,a,i});
		adj[b].insert({a,a,i});
	}
	for(int i=1;i<=n;i++) if(adj[i].size()%2==1) strt.push_back(i);
	for(int u:strt) if(adj[u].size()%2==1) dfs(u);
	for(int i=1;i<=n;i++) while(adj[i].empty()==0) dfs(i);
	cout<<strt.size()<<'\n';
	string s[2];
	s[0]="<- ";
	s[1]="-> ";
	for(int i=0;i<m;i++) cout<<s[dir[i]];
	return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/04ms6620 KiB
2Accepted0/046ms18084 KiB
3Accepted2/23ms7032 KiB
4Accepted2/23ms7052 KiB
5Accepted2/23ms7056 KiB
6Accepted2/23ms7056 KiB
7Accepted2/23ms7060 KiB
8Accepted2/24ms7332 KiB
9Accepted2/23ms7076 KiB
10Accepted2/212ms7376 KiB
11Accepted2/24ms7352 KiB
12Accepted2/23ms7368 KiB
13Accepted3/310ms10056 KiB
14Accepted3/317ms12088 KiB
15Accepted3/320ms12880 KiB
16Accepted3/335ms16960 KiB
17Accepted3/312ms10760 KiB
18Accepted3/332ms16728 KiB
19Accepted3/334ms18172 KiB
20Accepted3/348ms20344 KiB
21Accepted3/354ms23888 KiB
22Accepted3/356ms24452 KiB