Pagini recente » Cod sursa (job #2248866) | Cod sursa (job #2629924) | Cod sursa (job #2838426) | Cod sursa (job #31168) | Cod sursa (job #2734376)
#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;
}