216192026-01-13 17:21:26algoproEgyirányú egyensúlycpp17Hibás válasz 25/5045ms3132 KiB
// UUID: 6cae8eea-fe9a-4127-bb10-fe3486a80034
#include <bits/stdc++.h>
using namespace std;

vector<vector<pair<int,int>>>g;
vector<pair<int,int>>edge;
vector<int>dir;
bool found=false;

void dfs(int x){
	while(!g[x].empty() && !found){
		pair<int,int>y=g[x].back();
		g[x].pop_back();
		if(dir[y.second]==0){
			dir[y.second]=y.first;
			dfs(y.first);
		}
	}
	found=true;
}

int main() {
	int n,m;cin>>n>>m;
	g.resize(n+1);edge.resize(m+1);dir.resize(m+1);
	for(int i=1;i<=m;i++){
		int u,v;cin>>u>>v;
		g[u].push_back({v,i});
		g[v].push_back({u,i});
		edge[i]={u,v};
	}
	int c=0;
	for(int i=1;i<=n;i++)if(g[i].size()%2==1)c++;
	for(int i=1;i<=n;i++){
		if(!g[i].empty()){
			found=false;
			dfs(i);
		}
	}
	for(int i=1;i<=n;i++){
		if(!g[i].empty()){
			found=false;
			dfs(i);
		}
	}
	cout<<c<<'\n';
	for(int i=1;i<=m;i++){
		if(edge[i].second==dir[i])cout<<"-> ";
		else cout<<"<- ";
	}
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base25/50
1Elfogadva0/01ms316 KiB
2Hibás válasz0/034ms2612 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/21ms316 KiB
8Hibás válasz0/22ms428 KiB
9Elfogadva2/21ms316 KiB
10Hibás válasz0/22ms316 KiB
11Elfogadva2/22ms316 KiB
12Elfogadva2/22ms456 KiB
13Hibás válasz0/38ms928 KiB
14Hibás válasz0/317ms1480 KiB
15Elfogadva3/319ms1844 KiB
16Elfogadva3/324ms2392 KiB
17Hibás válasz0/39ms1416 KiB
18Elfogadva3/325ms2100 KiB
19Hibás válasz0/327ms1968 KiB
20Hibás válasz0/335ms2868 KiB
21Hibás válasz0/341ms2868 KiB
22Hibás válasz0/345ms3132 KiB