Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<cstdio>using namespace std;const int MAXN = 1000;const int MAXM = 5000;int head[MAXN+1], node[MAXM*2+1][2], path[MAXM+1], degree[MAXN+1];int n = 0, m = 0;void insert(int u, int v){node[++m][0] = v;node[m][1] = head[u];head[u] = m;node[++m][0] = u;node[m][1] = head[v];head[v] = m;++degree[u];++degree[v];}inline int dul(int u){return (u & 0x1)? u + 1 : u - 1;}int start_point(int N){int p = 1, c = 0;for(int i = 1; i <= N; ++i){if(degree[i] & 0x1){p = i;++c;}}return c == 0 || c == 2 ? p : -1;}