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
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
AC × 4
AC × 20
AC × 66
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