Submission #869224
Source Code Expand
#include <iostream> #include <fstream> #include <set> #include <map> #include <string> #include <vector> #include <bitset> #include <algorithm> #include <cstring> #include <cstdlib> #include <cmath> #include <cassert> #include <queue> #define mp make_pair #define pb push_back typedef long long ll; typedef long double ld; using namespace std; ll ans = 0; int was[120000]; vector<int> eds[120000]; int cl[120000]; int cc[120000][2]; int a[120000]; int n, m; void dfs1(int v, int c) { was[v] = 1; cl[v] = c; ++cc[v][c]; for (int u: eds[v]) { if (!was[u]) { dfs1(u, c^1); cc[v][0] += cc[u][0]; cc[v][1] += cc[u][1]; } } ans += abs(cc[v][0] - cc[v][1]); } vector<int> vv; vector<int> st; int dfs2(int v, int fr) { st.push_back(v); was[v] = 1; for (int u: eds[v]) { if (u == fr) continue; if (!was[u]) { if (dfs2(u, v)) return 1; } else { while (st.back() != u) vv.push_back(st.back()), st.pop_back(); vv.push_back(u); return 1; } } st.pop_back(); return 0; } ll get(int x) { ll ans = 0; ll now = x; for (int i = 0; i < n; ++i) { now += a[i]; ans += abs(now); } return ans; } int main() { scanf("%d%d", &n, &m); if (n % 2 == 1) { cout << -1 << "\n"; return 0; } for (int i = 0; i < m; ++i) { int a, b; scanf("%d%d", &a, &b); --a; --b; eds[a].push_back(b); eds[b].push_back(a); } if (m == n - 1) { dfs1(0, 0); if (cc[0][0] != cc[0][1]) { cout << -1 << "\n"; } else { cout << ans << "\n"; } } else { dfs2(0, -1); memset(was, 0, sizeof(was)); for (int i: vv) was[i] = 1; for (int i = 0; i < (int)vv.size(); ++i) { dfs1(vv[i], i % 2); a[i] = cc[vv[i]][0] - cc[vv[i]][1]; ans -= abs(a[i]); } int sum = 0; for (int i = 0; i < (int)vv.size(); ++i) sum += a[i]; n = vv.size(); if ((int)vv.size() % 2 == 0) { if (sum != 0) { cout << -1 << "\n"; return 0; } int lb = -120000; int rb = 120000; while (rb - lb > 3) { int m1 = lb + (rb - lb) / 3; int m2 = m1 + (rb - lb) / 3; if (get(m1) > get(m2)) lb = m1; else rb = m2; } ll aans = 1e11; for (int j = lb; j <= rb; ++j) aans = min(aans, get(j)); cout << ans + aans << "\n"; } else { sum /= 2; ans += abs(sum); a[0] -= sum; a[n - 1] -= sum; cout << ans + get(0) << "\n"; } } return 0; }
Submission Info
Submission Time | |
---|---|
Task | F - Namori |
User | LHiC |
Language | C++14 (GCC 5.4.1) |
Score | 2200 |
Code Size | 2506 Byte |
Status | AC |
Exec Time | 119 ms |
Memory | 15352 KB |
Compile Error
./Main.cpp: In function ‘int main()’: ./Main.cpp:80:23: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] scanf("%d%d", &n, &m); ^ ./Main.cpp:87:24: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] 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 | 8 ms | 3072 KB |
0_01.txt | AC | 9 ms | 3072 KB |
0_02.txt | AC | 10 ms | 3584 KB |
0_03.txt | AC | 8 ms | 3584 KB |
1_00.txt | AC | 9 ms | 3072 KB |
1_01.txt | AC | 88 ms | 12288 KB |
1_02.txt | AC | 78 ms | 9216 KB |
1_03.txt | AC | 61 ms | 8184 KB |
1_04.txt | AC | 85 ms | 9984 KB |
1_05.txt | AC | 87 ms | 9728 KB |
1_06.txt | AC | 83 ms | 9728 KB |
1_07.txt | AC | 84 ms | 9216 KB |
1_08.txt | AC | 84 ms | 10112 KB |
1_09.txt | AC | 72 ms | 8064 KB |
1_10.txt | AC | 74 ms | 7936 KB |
1_11.txt | AC | 78 ms | 7936 KB |
1_12.txt | AC | 79 ms | 7808 KB |
1_13.txt | AC | 8 ms | 3072 KB |
1_14.txt | AC | 84 ms | 7808 KB |
1_15.txt | AC | 82 ms | 7808 KB |
1_16.txt | AC | 8 ms | 3072 KB |
1_17.txt | AC | 79 ms | 7808 KB |
2_00.txt | AC | 9 ms | 3584 KB |
2_01.txt | AC | 115 ms | 15352 KB |
2_02.txt | AC | 87 ms | 11900 KB |
2_03.txt | AC | 61 ms | 8184 KB |
2_04.txt | AC | 94 ms | 11772 KB |
2_05.txt | AC | 96 ms | 11772 KB |
2_06.txt | AC | 101 ms | 11644 KB |
2_07.txt | AC | 95 ms | 11772 KB |
2_08.txt | AC | 99 ms | 11644 KB |
2_09.txt | AC | 79 ms | 8192 KB |
2_10.txt | AC | 79 ms | 8064 KB |
2_11.txt | AC | 80 ms | 7936 KB |
2_12.txt | AC | 86 ms | 7936 KB |
2_13.txt | AC | 8 ms | 3072 KB |
2_14.txt | AC | 84 ms | 8192 KB |
2_15.txt | AC | 88 ms | 7936 KB |
2_16.txt | AC | 8 ms | 3072 KB |
2_17.txt | AC | 86 ms | 7936 KB |
2_18.txt | AC | 8 ms | 3072 KB |
2_19.txt | AC | 85 ms | 12028 KB |
2_20.txt | AC | 61 ms | 8184 KB |
2_21.txt | AC | 119 ms | 15352 KB |
2_22.txt | AC | 94 ms | 11900 KB |
2_23.txt | AC | 94 ms | 11772 KB |
2_24.txt | AC | 93 ms | 11644 KB |
2_25.txt | AC | 87 ms | 11900 KB |
2_26.txt | AC | 91 ms | 11644 KB |
2_27.txt | AC | 79 ms | 8192 KB |
2_28.txt | AC | 81 ms | 8064 KB |
2_29.txt | AC | 85 ms | 8064 KB |
2_30.txt | AC | 87 ms | 7936 KB |
2_31.txt | AC | 8 ms | 3072 KB |
2_32.txt | AC | 86 ms | 8192 KB |
2_33.txt | AC | 85 ms | 7936 KB |
2_34.txt | AC | 8 ms | 3072 KB |
2_35.txt | AC | 81 ms | 7936 KB |
2_36.txt | AC | 65 ms | 8184 KB |
2_37.txt | AC | 65 ms | 8184 KB |
2_38.txt | AC | 64 ms | 8184 KB |
2_39.txt | AC | 64 ms | 8184 KB |
2_40.txt | AC | 62 ms | 8184 KB |
2_41.txt | AC | 65 ms | 8184 KB |
2_42.txt | AC | 62 ms | 8184 KB |
2_43.txt | AC | 66 ms | 8184 KB |