Submission #1688274
Source Code Expand
#include <iostream>
#include <cstdio>
#include <map>
#include <set>
#include <queue>
#include <vector>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#define rep(i,a,b) for(int i = a; i <= b; i++)
#define dep(i,a,b) for(int i = a; i >= b; i--)
#define Rep(i,a) for(int i = 0; i < a; i++)
#define pb(a) push_back(a)
#define mp(a,b) make_pair(a,b)
#define ab(x) ((x) < 0 ? -(x) : (x))
using namespace std;
typedef long long LL;
typedef map<int, int>::iterator mit;
typedef set<int>::iterator sit;
const int N = 1e5 + 10;
struct edge{ int to, pre; } e[N << 1]; int u[N], l = 0;
void ins(int a, int b) { e[++l] = (edge){b, u[a]}, u[a] = l; }
#define v e[i].to
#define reg(i,a) for(int i = u[a]; i; i = e[i].pre)
int T, n, m;
int pre[N], dfn = 0, dep[N], fa[N], cx, cy;
void dfs(int x, int f) {
pre[x] = ++dfn, dep[x] = dep[f] + 1, fa[x] = f;
reg(i,x) if (v != f) {
if (!pre[v]) dfs(v, x);
else if (pre[v] > pre[x]) cx = x, cy = v;
}
}
LL ans;
int cal(int x, int f, int f1, int f2) {
int w = 0;
if (dep[x] & 1) w = 1; else w = -1;
reg(i,x) if (v != f1 && v != f2 && v != f) w += cal(v, x, f1, f2);
ans += ab(w);
return w;
}
void work() {
memset(u, 0, sizeof(u)); l = 0;
scanf("%d%d",&n,&m);
rep(i,1,m) {
int a, b; scanf("%d%d",&a,&b);
ins(a, b), ins(b, a);
}
if (n & 1) { printf("-1\n"); return; }
memset(pre, 0, sizeof(pre)); cx = cy = 0;
dfs(1,0);
if (!cx && !cy) cx = fa[n], cy = n;
int ca = 0, cb = 0;
rep(i,1,n) if (dep[i] & 1) ca++; else cb++;
if ((dep[cx] ^ dep[cy]) & 1) { if (ca != cb) { printf("-1\n"); return; } }
static int c[N], cl; cl = 0;
while (cy != cx) c[++cl] = cy, cy = fa[cy];
if (c[cl] != cx) c[++cl] = cx;
static int a[N], s[N]; ans = 0;
rep(i,1,cl)
a[i] = cal(c[i], 0, c[(i == 1 ? cl : i - 1)], c[i % cl + 1]),
ans -= ab(a[i]);
s[0] = 0; rep(i,1,cl) s[i] = s[i - 1] + a[i];
int x;
if (!(cl & 1)) {
nth_element(s + 1, s + ((cl + 1) >> 1), s + cl + 1);
x = s[(cl + 1) >> 1];
} else x = (ca - cb) / 2;
rep(i,1,cl) ans = ans + ab(s[i] - x);
printf("%lld\n",ans);
}
int main() {
work();
return 0;
}
Submission Info
Submission Time
2017-10-16 15:36:58+0900
Task
F - Namori
User
WuHongxun
Language
C++14 (GCC 5.4.1)
Score
2200
Code Size
2163 Byte
Status
AC
Exec Time
31 ms
Memory
9216 KB
Compile Error
./Main.cpp: In function ‘void work()’:
./Main.cpp:49:21: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d",&n,&m);
^
./Main.cpp:51:32: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
int a, b; scanf("%d%d",&a,&b);
^
Judge Result
Set Name
Sample
Subtask1
All
Score / Max Score
0 / 0
1500 / 1500
700 / 700
Status
Set Name
Test Cases
Sample
0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt
Subtask1
0_00.txt, 0_01.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt
All
0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 2_00.txt, 2_01.txt, 2_02.txt, 2_03.txt, 2_04.txt, 2_05.txt, 2_06.txt, 2_07.txt, 2_08.txt, 2_09.txt, 2_10.txt, 2_11.txt, 2_12.txt, 2_13.txt, 2_14.txt, 2_15.txt, 2_16.txt, 2_17.txt, 2_18.txt, 2_19.txt, 2_20.txt, 2_21.txt, 2_22.txt, 2_23.txt, 2_24.txt, 2_25.txt, 2_26.txt, 2_27.txt, 2_28.txt, 2_29.txt, 2_30.txt, 2_31.txt, 2_32.txt, 2_33.txt, 2_34.txt, 2_35.txt, 2_36.txt, 2_37.txt, 2_38.txt, 2_39.txt, 2_40.txt, 2_41.txt, 2_42.txt, 2_43.txt
Case Name
Status
Exec Time
Memory
0_00.txt
AC
2 ms
3072 KB
0_01.txt
AC
1 ms
640 KB
0_02.txt
AC
2 ms
3072 KB
0_03.txt
AC
2 ms
3072 KB
1_00.txt
AC
2 ms
3072 KB
1_01.txt
AC
31 ms
8960 KB
1_02.txt
AC
27 ms
7168 KB
1_03.txt
AC
23 ms
4352 KB
1_04.txt
AC
28 ms
6784 KB
1_05.txt
AC
29 ms
6656 KB
1_06.txt
AC
29 ms
6400 KB
1_07.txt
AC
28 ms
6656 KB
1_08.txt
AC
29 ms
7040 KB
1_09.txt
AC
25 ms
4352 KB
1_10.txt
AC
25 ms
4352 KB
1_11.txt
AC
26 ms
4352 KB
1_12.txt
AC
27 ms
4352 KB
1_13.txt
AC
18 ms
3200 KB
1_14.txt
AC
23 ms
4352 KB
1_15.txt
AC
27 ms
4352 KB
1_16.txt
AC
18 ms
3200 KB
1_17.txt
AC
26 ms
4352 KB
2_00.txt
AC
2 ms
3072 KB
2_01.txt
AC
31 ms
9216 KB
2_02.txt
AC
27 ms
6656 KB
2_03.txt
AC
23 ms
4352 KB
2_04.txt
AC
28 ms
6656 KB
2_05.txt
AC
29 ms
6656 KB
2_06.txt
AC
29 ms
6656 KB
2_07.txt
AC
28 ms
6656 KB
2_08.txt
AC
29 ms
6656 KB
2_09.txt
AC
24 ms
4352 KB
2_10.txt
AC
25 ms
4352 KB
2_11.txt
AC
26 ms
4352 KB
2_12.txt
AC
27 ms
4352 KB
2_13.txt
AC
19 ms
3200 KB
2_14.txt
AC
23 ms
4480 KB
2_15.txt
AC
27 ms
4352 KB
2_16.txt
AC
19 ms
3200 KB
2_17.txt
AC
27 ms
4352 KB
2_18.txt
AC
1 ms
640 KB
2_19.txt
AC
27 ms
6656 KB
2_20.txt
AC
23 ms
4352 KB
2_21.txt
AC
31 ms
9216 KB
2_22.txt
AC
28 ms
6656 KB
2_23.txt
AC
28 ms
6656 KB
2_24.txt
AC
29 ms
6656 KB
2_25.txt
AC
27 ms
6656 KB
2_26.txt
AC
29 ms
6656 KB
2_27.txt
AC
24 ms
4352 KB
2_28.txt
AC
25 ms
4352 KB
2_29.txt
AC
26 ms
4352 KB
2_30.txt
AC
27 ms
4352 KB
2_31.txt
AC
18 ms
3200 KB
2_32.txt
AC
27 ms
4480 KB
2_33.txt
AC
26 ms
4352 KB
2_34.txt
AC
19 ms
3200 KB
2_35.txt
AC
27 ms
4352 KB
2_36.txt
AC
23 ms
4352 KB
2_37.txt
AC
24 ms
4352 KB
2_38.txt
AC
23 ms
4352 KB
2_39.txt
AC
23 ms
4352 KB
2_40.txt
AC
23 ms
4352 KB
2_41.txt
AC
23 ms
4352 KB
2_42.txt
AC
23 ms
4352 KB
2_43.txt
AC
23 ms
4352 KB