hiho week 50 register

Ended

Participants:436

Verdict:Accepted
Score:100 / 100
Submitted:2015-06-15 15:06:27

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#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;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX