879 2022. 01. 24 23:20:00 Babják Péter Egyirányú egyensúly cpp11 Elfogadva 50/50 56ms 24452 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 Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 4ms 6620 KiB
2 Elfogadva 0/0 46ms 18084 KiB
3 Elfogadva 2/2 3ms 7032 KiB
4 Elfogadva 2/2 3ms 7052 KiB
5 Elfogadva 2/2 3ms 7056 KiB
6 Elfogadva 2/2 3ms 7056 KiB
7 Elfogadva 2/2 3ms 7060 KiB
8 Elfogadva 2/2 4ms 7332 KiB
9 Elfogadva 2/2 3ms 7076 KiB
10 Elfogadva 2/2 12ms 7376 KiB
11 Elfogadva 2/2 4ms 7352 KiB
12 Elfogadva 2/2 3ms 7368 KiB
13 Elfogadva 3/3 10ms 10056 KiB
14 Elfogadva 3/3 17ms 12088 KiB
15 Elfogadva 3/3 20ms 12880 KiB
16 Elfogadva 3/3 35ms 16960 KiB
17 Elfogadva 3/3 12ms 10760 KiB
18 Elfogadva 3/3 32ms 16728 KiB
19 Elfogadva 3/3 34ms 18172 KiB
20 Elfogadva 3/3 48ms 20344 KiB
21 Elfogadva 3/3 54ms 23888 KiB
22 Elfogadva 3/3 56ms 24452 KiB