#include
#include
using namespace std;
const int MAX_N = 100;
const int MAX_M = 10000;
struct edge {
int v, next;
int len;
} E[MAX_M];
int p[MAX_N], eid;
void init() {
memset(p, -1, sizeof(p));
eid = 0;
}
void insert(int u, int v) {
E[eid].v = v;
E[eid].next = p[u];
p[u] = eid++;
}
int n,m;
int degree[MAX_N];
int euler(){
int first = 0,last = 0;
for(int i = 1;i <= n;i++){
if(degree[i] 1){
cout<
return 0;
}else if(degree[i] == -1){
if(first != 0){
cout<
return 0;
}else{
first = i;
}
}else if(degree[i] == 1){
if(last != 0 ){
cout<
return 0;
}else{
last = i;
}
}
}
if(first == 0 && last == 0){
cout<
return 1;
}else if(first != 0 && last != 0){
cout<
return first;
}
}
int main() {
init();
memset(degree,0,sizeof(degree));
cin>>n>>m;
for(int i=0;i
int u,v;
cin>>u>>v;
insert(u,v);
degree[u]--;
degree[v]++;
}
euler();
return 0;
}
原文:https://www.cnblogs.com/ukcxrtjr/p/11188060.html