8792022-01-24 23:20:00Babják PéterEgyirányú egyensúlycpp11Elfogadva 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/04ms6620 KiB
2Elfogadva0/046ms18084 KiB
3Elfogadva2/23ms7032 KiB
4Elfogadva2/23ms7052 KiB
5Elfogadva2/23ms7056 KiB
6Elfogadva2/23ms7056 KiB
7Elfogadva2/23ms7060 KiB
8Elfogadva2/24ms7332 KiB
9Elfogadva2/23ms7076 KiB
10Elfogadva2/212ms7376 KiB
11Elfogadva2/24ms7352 KiB
12Elfogadva2/23ms7368 KiB
13Elfogadva3/310ms10056 KiB
14Elfogadva3/317ms12088 KiB
15Elfogadva3/320ms12880 KiB
16Elfogadva3/335ms16960 KiB
17Elfogadva3/312ms10760 KiB
18Elfogadva3/332ms16728 KiB
19Elfogadva3/334ms18172 KiB
20Elfogadva3/348ms20344 KiB
21Elfogadva3/354ms23888 KiB
22Elfogadva3/356ms24452 KiB