878 2022. 01. 24 23:15:24 Babják Péter Egyirányú egyensúly cpp11 Elfogadva 50/50 93ms 24340 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;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 4ms 6496 KiB
2 Elfogadva 0/0 85ms 17928 KiB
3 Elfogadva 2/2 3ms 6904 KiB
4 Elfogadva 2/2 3ms 6904 KiB
5 Elfogadva 2/2 3ms 6964 KiB
6 Elfogadva 2/2 3ms 6920 KiB
7 Elfogadva 2/2 3ms 6928 KiB
8 Elfogadva 2/2 4ms 7184 KiB
9 Elfogadva 2/2 3ms 6948 KiB
10 Elfogadva 2/2 4ms 7236 KiB
11 Elfogadva 2/2 4ms 7200 KiB
12 Elfogadva 2/2 4ms 7200 KiB
13 Elfogadva 3/3 14ms 9912 KiB
14 Elfogadva 3/3 21ms 11952 KiB
15 Elfogadva 3/3 27ms 12688 KiB
16 Elfogadva 3/3 43ms 16852 KiB
17 Elfogadva 3/3 14ms 10648 KiB
18 Elfogadva 3/3 41ms 16528 KiB
19 Elfogadva 3/3 45ms 18036 KiB
20 Elfogadva 3/3 57ms 20084 KiB
21 Elfogadva 3/3 68ms 23760 KiB
22 Elfogadva 3/3 93ms 24340 KiB