Cod sursa(job #2734376)

Utilizator mariamirabella2Bucur-Sabau Maria-Mirabela mariamirabella2 Data 31 martie 2021 19:36:39
Problema Ciclu Eulerian Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include<vector>
#include<fstream>
#include<map>
using namespace std;

ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");

struct muchie
{
		int x,y,folosit,rot;
}e[100005];
int grad[100005],c[100005],nr;
vector<pair<int,int>>v[100005];



void euler(int nod,int i){
	while(v[nod].size()){
		auto x= v[nod].back();
		v[nod].pop_back();
		if(e[x.second].folosit){
			continue;
		}
		e[x.second].folosit=1;
		if(nod==e[x.second].x){
			e[x.second].rot=1;
		}
		euler(x.first,x.second);
	}
	c[++nr]=i;
}

int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
    int m;
    cin>>m;
    for(int i=1;i<=m;i++){
		cin>>e[i].x>>e[i].y;
		v[e[i].x].push_back({e[i].y,i});
		v[e[i].y].push_back({e[i].x,i});
		grad[e[i].x]++;
		grad[e[i].y]++;
		
	}
	int cnt=0,start=1;
	for(int i=0;i<=9;i++){
		if(grad[i]%2==1){
			start=i;
			cnt++;
		}
	}
	if(cnt and cnt!=2){
		cout<<0;
		return 0;
	}
	euler(start,0);
	if(nr==m+1){
		cout<<1<<'\n';
		for(int i=1;i<nr;i++)
			cout<<c[i]<<" "<<e[c[i]].rot<<'\n';
		
	}
	else{
		cout<<0;
	}
	
    return 0;
}