8782022-01-24 23:15:24Babják PéterEgyirányú egyensúlycpp11Accepted 50/5093ms24340 KiB
#include <bits/stdc++.h>
#define MAXN 50100
#define pii pair<int,int>
using namespace std;
int n,m,db;
multiset<array<int,3> >adj[MAXN];
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]);
	}
}
signed main()
{
	cin>>n>>m;
	for(int i=0;i<m;i++)
	{
		int a,b;
		cin>>a>>b;
		adj[a].insert({b,a,i});
		adj[b].insert({a,a,i});
	}
	vector<int>strt;
	for(int i=1;i<=n;i++)
	{
		if(adj[i].size()%2==1)
		{
			strt.push_back(i);
			db++;
		}
	}
	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<<db<<'\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/04ms6496 KiB
2Accepted0/085ms17928 KiB
3Accepted2/23ms6904 KiB
4Accepted2/23ms6904 KiB
5Accepted2/23ms6964 KiB
6Accepted2/23ms6920 KiB
7Accepted2/23ms6928 KiB
8Accepted2/24ms7184 KiB
9Accepted2/23ms6948 KiB
10Accepted2/24ms7236 KiB
11Accepted2/24ms7200 KiB
12Accepted2/24ms7200 KiB
13Accepted3/314ms9912 KiB
14Accepted3/321ms11952 KiB
15Accepted3/327ms12688 KiB
16Accepted3/343ms16852 KiB
17Accepted3/314ms10648 KiB
18Accepted3/341ms16528 KiB
19Accepted3/345ms18036 KiB
20Accepted3/357ms20084 KiB
21Accepted3/368ms23760 KiB
22Accepted3/393ms24340 KiB